読書から 別の答え 次のコマンドを使用して現在の エポック時間 を印刷できることを知っています。
_$ date +'%s'
1491150773
_
date(1)
のマニュアルページを読んで(注:実際にはmacOSを使用しています)、使用方法を示す例を見つけました。
_Finally the command: date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s" can be used to parse the output from date and express it in Epoch time.
_
例を読むと、_+
_は一重引用符の中に入ることができるようです:
_$ date '+%s'
1491150781
_
現在のエポック時間を正常に出力できたとしても、なぜそれが機能するのか理解できず、いくつか質問があります。
date +'%s'
_が現在のエポック時間を出力するのはなぜですか?この例での使用の背後にあるパターンを示すより一般的な例はありますか?+
_を引用符で囲むことができるのはなぜですか?コマンドを explainshell に入れてみましたが、あまり役に立ちません:
BSD日付とGNU日付はどちらも次の形式です。
date +FORMAT
with FORMAT
は、日付を表示するための出力フォーマット文字列です。したがって、date
にフィードするのは、+
で始まる単なる文字列です。
文字列をdate
に渡す前に、文字列はシェルによって解釈されます。したがって、+%s
または+'%s'
または"+%s"
は両方とも同等であり、すべてのPOSIXシェルによってそのまま解釈されます。
+'%s'
の唯一の利点は、+
を気にすることなく、どの文字列形式が使用されたか、またはコピーして解析することをすばやく検出できることです。
また、+'FORMAT'
は、シェル拡張と解釈できる特別な形式を使用するときに役立ちます。 zsh
の例:
date +'(%s)'
動作します:
date +(%s)
しません。