この「printf」コマンドは何をしますか?


15

私はチュートリアルを行っていましたが、そこでコマンドに出会いました:

printf "%(%s)T"

このコマンドの出力は次のとおりです。

1454299615

誰もこのコマンドと出力の意味を教えてもらえますか?


これはシェルに依存しているようです。あなたprintfのビルトインですか? /usr/bin/printfUbuntu 14.04ではエラーが発生しますprintf: %(: invalid conversion specification。を使用している場合bashman bash組み込みのドキュメントをお試しください。
アリエル

回答:


17

フォーマットされた時間をで表現する方法printfです。

形式は次のとおりです。

%(FORMAT)T

どこFORMATで定義されていますstrftime(3)

エポック時間(1970-01-01 00:00:00 UTCからの秒数)を取得するには、次のstrftime(3)形式が必要です%s

printf "%(%s)T\n"

\n最後に改行を追加する必要があることに注意してくださいprintfechoデフォルトとは異なり)。

例:

$ 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/printfcshzshビルトインを。


@rtecxs物事を明確にするために、編集を別の場所に移動しました。とにかくありがとう:)
heemayl

この機能は文書化されていますか?私はprintf(1)マニュアルページでそれを見ませんでした。
ネイト・エルドリッジ

@NateEldredge printfはここに組み込まれています(ただし、外部のものは同じ動作をします)。.check help printf..
heemayl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.