Solaris 10 및 Solaris 11에서 에포크 이후의 초 수를 얻으려고 합니다.
Solaris 11에서 "date +%s"는 bash에서 출력을 제공하지만 Solaris 10에서도 실패합니다.
Solaris 10에서 올바른 명령은 무엇입니까?
답변1
나는 다음을 사용할 것이다 nawk
:
nawk "BEGIN{print srand}"
POSIX 셸에서 더 쉬워진 이식성(예: /usr/xpg4/bin/sh
Solaris 10):
command -p awk 'BEGIN{srand(); print srand()}'
(Solaris 10에서는 /bin/sh
Bourne 쉘이 파생되며 이를 호출하여 /usr/xpg4/bin/awk
표준 awk
( /bin
70년대의 오래된 표준)을 얻거나 고대 유틸리티보다 우선 순위를 갖는 것을 PATH=`getconf PATH`${PATH+:$PATH}
포함하여 표준 유틸리티에 대한 작업을 수행할 수 있습니다 . awk
더 /bin/sh
이상 고대 쉘이 아니지만 대부분의 다른 도구는 /bin
여전히 그렇습니다.)
답변2
perl
설치되었다고 가정하면 일반적으로 이 상태로 되돌아갑니다.
perl -e 'print time."\n";'
예를 들어,
$ perl -e 'print time."\n";'
1457531088
설치되었다고 가정하면 perl
OS에 구애받지 않을 것입니다.
답변3
Solaris 10과 11 모두 최소 설치가 아닌 한 zsh와 함께 제공되므로(이 경우 bash와 함께 제공되지 않음) 특수 변수에서 현재 에포크 시간으로 전환할 수 있습니다 $EPOCHSECONDS
. 모듈이 로드되었습니다 zsh/datetime
.
$ zmodload zsh/datetime
$ echo $EPOCHSECONDS
1684393493
이 모듈에는 인간 표현으로 형식을 지정하거나 인간 표현을 다시 에포크 초로 변환할 strftime
수 있는 내장 함수 도 함께 제공됩니다 .$EPOCHSECONDS
-r
Solaris 11 ksh
및 Solaris 10에서는 sh
(그래픽 환경을 사용할 수 있는 경우) (이전 버전이기는 하지만) 기반이어야 합니다. 내장 함수는 날짜 형식을 지정하고 구문 분석할 수도 있습니다.ksh93
/usr/dt/bin/dtksh
ksh93
ksh93
printf
printf '%(%s)T\n' now
초 단위의 에포크 시간을 제공해야 합니다. now
일반적인 미국 사람 표현, 일부 ISO 사양 또는 심지어 crontab 시간 사양을 포함한 다른 일반적인 날짜 사양일 수 있습니다.
bash
이것의 하위 집합은 4.2(구문 분석 부분이 아닌 형식화 부분만)에서 복사되었으며 $EPOCHSECONDS
zsh는 5.0( )에서 복사되었습니다 strftime
.