回答:
フォーマットされた時間をで表現する方法printf
です。
形式は次のとおりです。
%(FORMAT)T
どこFORMAT
で定義されていますstrftime(3)
。
エポック時間(1970-01-01 00:00:00 UTCからの秒数)を取得するには、次のstrftime(3)
形式が必要です%s
。
printf "%(%s)T\n"
\n
最後に改行を追加する必要があることに注意してくださいprintf
(echo
デフォルトとは異なり)。
例:
$ printf "%(%s)T\n"
1454300377
$ printf "%(%Y-%m-%d)T\n"
2016-02-01
$ printf "%(%Y-%m-%d %H:%M:%S)T\n"
2016-02-01 10:20:27
完全を期すためdate
に、同様のstrftime(3)
形式でコマンドを使用して時間を取得することもできます。
$ date '+%s'
1454300542
$ date '+%Y-%m-%d' ## Short form: date -I
2016-02-01
$ date '+%Y-%m-%d %H:%M:%S'
2016-02-01 10:22:47
注:この動作は固有であるbash
のとksh
、内蔵機能のprintf
、そしてないと動作しません/usr/bin/printf
、csh
とzsh
ビルトインを。
printf(1)
マニュアルページでそれを見ませんでした。
printf
はここに組み込まれています(ただし、外部のものは同じ動作をします)。.check help printf
..
printf
のビルトインですか?/usr/bin/printf
Ubuntu 14.04ではエラーが発生しますprintf: %(: invalid conversion specification
。を使用している場合bash
。man bash
組み込みのドキュメントをお試しください。