我用来date \+%F\-%T
以这种格式显示日期和时间:2019-08-15-21:34:58
.
来自man date
:
%F
完整日期;与 %Y-%m-%d
%T
时间相同;与 %H:%M:%S 相同
我承认没有解释\+
或\-
。
后来我明白反斜杠是转义的,加号是参数前缀,连字符只是一个类似字符串的分隔(日期-时间),
而且,有些人使用更简单的+'%F-%T'
或+"%F-%T"
代替。
是否有理由在日期参数中使用 + 或 - ?
反斜杠什么都不做。
在-
和+
字符不需要进行转义,因为他们没有在任何shell的语法任何方式特殊。
$ set -o xtrace
Run Code Online (Sandbox Code Playgroud)
$ date +%F-%T
+ date +%F-%T
2019-08-15-11:51:46
Run Code Online (Sandbox Code Playgroud)
$ date \+%F\-%T
+ date +%F-%T
2019-08-15-11:51:50
Run Code Online (Sandbox Code Playgroud)
正如您在上面的跟踪输出中所看到的,无论反斜杠如何,shell 执行的命令都是相同的。还要注意,跟踪输出只是来自 shell 的“调试输出”,它输出的任何命令通常都不适合 shell input。
在+
引入了一个date
格式规范。而这-
只是一个文字破折号,是格式规范的一部分(也将是输出中的破折号)。
命令date \+%F\-%T
与date +%F-%T
. 您通常还会看到引用的日期格式,如date +'%F-%T'
. 这在这里没有区别,因为格式是一个单词,但date +'%F %T'
需要引用它以防止 shell 将空格上的格式拆分为两个单独的参数date
。
什么确实有差别是%
字符。如果您在 crontab 规范中使用它们,您会想要转义它们。参见例如如何在 cron 选项卡作业中执行`date`?
该%
字符在fish
3.0 版之前的shell语法中是特殊的(用于作业扩展),但仅当出现在单词的第一个字符时(因此在 a 之后时不是+
)。类似地,在 中zsh
,前导%
字符的特殊之处在于它的?
后面不作为 glob 运算符(允许kill %?cmd
无需引用?
),但这同样不适用于此处。
归档时间: |
|
查看次数: |
136 次 |
最近记录: |