コマンドの日付と時刻から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
実際には%(...)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 epoch時間のみ(-1
または今、最新バージョンでは、次のものも入手できます。今不足しているパラメータ)ksh93は複雑な相対関係(at
上記の英語、crontab、ISO 8601:2004期間を含む)または絶対時間仕様をサポートしています(参照:テストデータいくつかの例のソースコードから)。
でksh93
epoch時間を渡すには、prefixを使用してください#
。
$ printf '%(%c)T\n' '#0'
Thu Jan 1 00:00:00 1970
答え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))'