【发布时间】:2010-12-15 17:19:29
【问题描述】:
在unix的字段之间用水平制表符打印年、月、日的命令是什么?下面的答案正确吗??
%date +"%y %m %d"
我知道 tat $ date +"%y-%m-%d" 将给出 88-05-21
【问题讨论】:
-
很好奇,如果你已经有了可能的答案,为什么还要问它是否有效而不是仅仅尝试呢?
在unix的字段之间用水平制表符打印年、月、日的命令是什么?下面的答案正确吗??
%date +"%y %m %d"
我知道 tat $ date +"%y-%m-%d" 将给出 88-05-21
【问题讨论】:
如果你使用 bash shell:
$ date +"%y"$'\t'"%m"$'\t'"%d"
10 12 15
注意$'\t' shell 表示法,它产生文字水平制表符。
编辑:
许多命令,例如printf(1) 支持某种符号来指定任何特殊字符,例如水平制表符:
$ printf 'x\ty\n'
x y
如果命令不支持这样的东西,处理它的方法是在格式字符串中嵌入一个文字水平制表符。不幸的是,外壳往往会特别对待制表键,例如执行自动完成。
在 bash(可能还有其他类似 sh 的 shell)中,有一个方便的符号,如 $'\t' 来解决这个问题。
另一种方法是调用 shell 的“引用模式”。在许多 shell(包括 bash 和 tcsh)中,这可以通过在按特殊字符之前按 Ctrl-V 来完成。这将只为下一个字符启用 shell 的引号模式:
$ echo 'x q'
x q
上面的结果可以通过在x之后和tab键之前按Ctrl-V来实现。
【讨论】:
要打印带有空格的日期,您只需:date "+%y %m %d"。我强烈建议您查看 date 的手册页 (man date)。
【讨论】: