$ 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'
打印当前纪元时间?是否有一个更通用的示例来说明此示例中其用法背后的模式? - 为什么我可以将引号放在
+
引号内?
我尝试将命令放入解释shell,但这不是很有帮助:
答案1
BSD 日期和 GNU 日期都具有以下形式:
date +FORMAT
withFORMAT
是显示日期的输出格式字符串。所以你要输入的date
只是一个以 开头的字符串+
。
在将字符串传递给 之前date
,该字符串由 shell 解释。因此+%s
或+'%s'
或"+%s"
两者是等效的,由所有 POSIX shell 按原样解释。
唯一的优点+'%s'
是你可以快速检测使用了哪种字符串格式,或者复制、解析它,而不必担心+
.
另外,+'FORMAT'
当您使用某些特殊格式时,它将为您提供帮助,这些特殊格式可以解释为您的 shell 扩展。示例zsh
:
date +'(%s)'
会工作,同时:
date +(%s)
不会。