Solaris 11의 날짜 표시

Solaris 11의 날짜 표시
# date +"%b %d %H:$(( $(date +'%M')-5))"
Nov 20 12:45
date +"%b %d %H:$(( $(date +'%M')-55))"
Nov 20 12:-5

내가 왜 여기에 와야 합니까 -5? 수정하는 방법? 도와주세요.

답변1

아마도 12시 50분에 실행하면 date +%M50이 되고 5를 빼면 45가 되고 55를 빼면 -5가 되기 때문일 것입니다.

12시에 첫 번째 점수도 -5가 됩니다.

12:07에 12:2대신 이 표시되고 12:09에 일부 쉘은 유효한 8진수가 아니라고 12:02불평합니다 . 095분 앞선 시간을 얻기 위해 분 필드에서 5를 빼는 것은 불가능합니다. 예를 들어, 언제 Jan 1 00:00당신에게 주어야 하는지 생각해 보십시오 Dec 31 23:55.

perlSolaris에서 날짜를 계산하려면 또는 중 하나를 사용할 수 있지만 zsh후자가 항상 기본적으로 설치되는 것은 아닙니다. 5분 전 시간을 얻으려면:

perl -MPOSIX -le 'print strftime("%b %d %R", localtime(time - 5*60))'

또는:

zsh -c 'zmodload zsh/datetime; strftime "%b %d %R" $((EPOCHSECONDS - 5*60))'

실제로 Solaris 11 버전부터 /bin/sh실제로 는 ksh93이므로 거기에서도 /bin/ksh사용할 수 있습니다 (바람직하게 는 while 과는 달리 ).kshshsh지금ksh93에 의해 구현되었으며 향후 변경될 수 있으며 표준 sh언어에는 이러한 기능이 없습니다.)

ksh -c 'printf "%(%b %d %R)T\n" "5 minutes ago"'

@glennjackman이 의견에서 지적했듯이 이미 bash설치한 경우 다음을 수행할 수도 있습니다.

bash -c 'printf -v t "%(%s)T" -1 && printf "%(%b %d %R)T\n" "$((t - 5*60))"'

(Solaris 버전 11에는 bash에 대한 지원도 추가되었으며 %sbash의 최신 버전입니다.)

우리는 더 많은 언어를 축적하고 있지만 TCL 통역사가 있는 경우 예를 들면 다음과 같습니다 expect.

expect -c 'puts [clock format [
  clock add [clock seconds] -5 minute] -format "%b %d %R"]'

또는 python3:

python3 -c 'import time; print(time.strftime("%b %d %R", time.localtime(time.time() - 5*60)))'

관련 정보