ksh - 현재 시간에서 5분을 뺍니다.

ksh - 현재 시간에서 5분을 뺍니다.

명령의 날짜와 시간에서 5분을 뺀 값을 가져와야 합니다 date.

date:
29 Aug 2018 21:56:01

result:
29 Aug 2018 21:51:02

인터넷/포럼에서 검색을 시도했지만 대부분 해당 -d옵션을 사용하는 것과 관련이 있으며 내가 지원하지 않는 옵션도 있습니다 -d.

이것은 Bash에서 작동하지만 ksh에서 작동하는 것이 필요합니다.

$ printf "%(%d %h %Y %H:%M:%S)T\n" $(( $(printf "%(%s)T") - 5 * 60 ))

답변1

bash실제로 %(...)Tksh93의 형식을 복사하지만 일부만 복사합니다.

ksh93의 기능은 훨씬 더 강력합니다.

$ date; printf '%(%c)T\n' 'exactly five minutes ago'
Mon  3 Sep 08:08:32 BST 2018
Mon Sep  3 08:03:32 2018

bashUnix epoch 시간만( -1또는지금, 최신 버전에서는 다음을 얻을 수도 있습니다.지금누락된 매개변수) ksh93은 복잡한 상대 관계( at위의 영어, crontab, ISO 8601:2004 기간 포함) 또는 절대 시간 사양을 지원합니다(참조:테스트 데이터일부 예제의 소스 코드에서).

에서 ksh93epoch 시간을 전달하려면 prefix를 사용하세요 #.

$ printf '%(%c)T\n' '#0'
Thu Jan  1 00:00:00 1970

(여기서도,영국 시간대의 에포크 시간 0이 오전 1시이기 때문에 잘못된 시간을 제공하는 경우가 있습니다.)

답변2

당신이 사용할 수있는 perl:

echo $(( $(printf "%(%s)T") - 5 * 60 )) | perl -lne 'print scalar localtime $_'

또는 순수한 Perl에서는:

perl -le 'print scalar localtime(time()-5*60)'

포맷을 사용하려면 다음을 수행하십시오 strftime().

perl -MPOSIX=strftime -le 'print strftime("%d %h %Y %H:%M:%S", localtime(time()-5*60))'

관련 정보