我正在进行一个教程,然后遇到了一个命令:
printf "%(%s)T"
该命令的输出是:
1454299615
谁能告诉我这个命令是什么以及其输出的含义是什么?
答案1
这是一种用 来表达格式化时间的方式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
内置函数。