例如,我希望以下列格式显示当前日期和时间:
yyyymmddhhmmss
我该怎么做呢? 似乎大多数的日期格式都有 -,/,:等等。
-
/
:
给你:
date +%Y%m%d%H%M%S
正如 man date在接近顶部所说的那样,您可以像下面这样使用 date命令:
man date
date
date [OPTION]... [+FORMAT]
也就是说,您可以给它一个格式参数,从 +开始。 你也许能猜到我使用的格式化符号的含义:
+
%Y
%m
%d
您可以在 man date中找到这个符号和其他格式化符号。
Shell 脚本中的一个简单示例
#!/bin/bash current_date_time="`date +%Y%m%d%H%M%S`"; echo $current_date_time;
不带标点符号格式:-+% Y% m% d% H% M% S 标点符号:-+% Y -% m -% d% H:% M:% S
如果你正在使用 Bash,你也可以使用以下命令之一:
printf '%(%Y%m%d%H%M%S)T' # prints the current time printf '%(%Y%m%d%H%M%S)T' -1 # same as above printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the shell was invoked
您可以使用 Option-v varname将结果存储在 $varname中,而不是将其打印到 stdout:
-v varname
$varname
printf -v varname '%(%Y%m%d%H%M%S)T'
Date 命令总是在 subshell 中执行(例如在单独的进程中) ,printf 是一个内置命令,因此速度更快。
没有标点符号 (正如@Burusthman 提到的) :
current_date_time="`date +%Y%m%d%H%M%S`"; echo $current_date_time;
办事处:
20170115072120
标点符号 :
current_date_time="`date "+%Y-%m-%d %H:%M:%S"`"; echo $current_date_time;
2017-01-15 07:25:33
使用 参数展开(需要 bash 4.4或更新版本)做到这一点的有趣/有趣的 方法:
bash 4.4
${parameter@operator} - P operator 展开是一个字符串,它是将参数值作为提示字符串展开的结果。
${parameter@operator} - P operator
展开是一个字符串,它是将参数值作为提示字符串展开的结果。
$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; } $ show_time 20180724003251