我用来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`?
该%字符在fish3.0 版之前的shell语法中是特殊的(用于作业扩展),但仅当出现在单词的第一个字符时(因此在 a 之后时不是+)。类似地,在 中zsh,前导%字符的特殊之处在于它的?后面不作为 glob 运算符(允许kill %?cmd无需引用?),但这同样不适用于此处。
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |