Shell
使用日期實用程序列印紀元時間
$ 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
,該字元串由您的 shell 解釋。so+%s
or+'%s'
or"+%s"
都是等價的,所有 POSIX shell 都按原樣解釋。唯一的好處
+'%s'
是你可以快速檢測出使用了哪種字元串格式,或者複製、解析它,而不用擔心+
.此外,
+'FORMAT'
當您使用一些特殊格式時,將幫助您,這些格式可以解釋為您的 shell 擴展。範例zsh
:date +'(%s)'
在以下情況下可以工作:
date +(%s)
不會。