Answers:
这是一种通过以下方式表达格式化时间的方法 printf
。
格式为:
%(FORMAT)T
凡FORMAT
被定义strftime(3)
。
因此,要获取纪元时间(自1970-01-01 00:00:00 UTC以来的时间,以秒为单位),我们需要使用以下strftime(3)
格式%s
:
printf "%(%s)T\n"
请注意,您还需要\n
最后添加一个换行符,因为printf
(不同于echo
)默认情况下不会添加换行符。
例:
$ 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/printf
,csh
和zsh
内置插件。
printf(1)
手册页中没有看到它。
printf
是一个内置函数(尽管外部函数具有相同的行为).. check help printf
..
printf
是内建的吗?/usr/bin/printf
在Ubuntu 14.04上给出错误:printf: %(: invalid conversion specification
。如果您使用bash
。尝试man bash
获取内置文档。