Shell

使用日期實用程序列印紀元時間

  • April 3, 2017

通過閱讀另一個答案,我知道以下命令可用於列印目前紀元時間

$ 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

withFORMAT是顯示日期的輸出格式字元串。所以你要餵date的只是一個字元串,以+.

在您將字元串傳遞給 之前date,該字元串由您的 shell 解釋。so +%sor +'%s'or"+%s"都是等價的,所有 POSIX shell 都按原樣解釋。

唯一的好處+'%s'是你可以快速檢測出使用了哪種字元串格式,或者複製、解析它,而不用擔心+.

此外,+'FORMAT'當您使用一些特殊格式時,將幫助您,這些格式可以解釋為您的 shell 擴展。範例zsh

date +'(%s)'

在以下情況下可以工作:

date +(%s)

不會。

引用自:https://unix.stackexchange.com/questions/355461