# 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 +%M
50이 되고 5를 빼면 45가 되고 55를 빼면 -5가 되기 때문일 것입니다.
12시에 첫 번째 점수도 -5가 됩니다.
12:07에 12:2
대신 이 표시되고 12:09에 일부 쉘은 유효한 8진수가 아니라고 12:02
불평합니다 . 09
5분 앞선 시간을 얻기 위해 분 필드에서 5를 빼는 것은 불가능합니다. 예를 들어, 언제 Jan 1 00:00
당신에게 주어야 하는지 생각해 보십시오 Dec 31 23:55
.
perl
Solaris에서 날짜를 계산하려면 또는 중 하나를 사용할 수 있지만 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 과는 달리 ).ksh
sh
sh
지금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에 대한 지원도 추가되었으며 %s
bash의 최신 버전입니다.)
우리는 더 많은 언어를 축적하고 있지만 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)))'