Shell-Script
ksh - 從目前時間減去 5 分鐘
我需要將命令的日期和時間
date
減去 5 分鐘。date: 29 Aug 2018 21:56:01 result: 29 Aug 2018 21:51:02
我嘗試在 Internet/論壇上進行搜尋,但其中大部分涉及使用該
-d
選項,而我所擁有的不支持該-d
選項。這個適用於 Bash,但我需要一些適用於 ksh 的東西。
$ printf "%(%d %h %Y %H:%M:%S)T\n" $(( $(printf "%(%s)T") - 5 * 60 ))
你可以使用
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))'
bash
實際上%(...)T
從 ksh93 複製了格式,但只是一小部分。這在 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
bash
僅支持 Unix 紀元時間(或目前-1
,儘管在最近的版本中,您也可以在缺少參數的情況下獲得now),而 ksh93 支持複雜的相對時間(包括上面的英語、crontab、、ISO 8601:2004 持續時間)或絕對時間規範(參見一些範例的源中的測試數據)。at
在
ksh93
中,如果要傳遞紀元時間,請使用#
前綴:$ printf '%(%c)T\n' '#0' Thu Jan 1 00:00:00 1970