这个“printf”命令起什么作用?

这个“printf”命令起什么作用?

我正在进行一个教程,然后遇到了一个命令:

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/printfcshzsh内置函数。

相关内容