我正在尝试使用
date
命令以 %d.%m.%y-%H:%M:%S
格式输出今天的日期。显然我只是这样做:
date +%d.%m.%y-%H:%M:%S
这在 bash 中工作正常,我得到了我期望的输出,但是当我在 zsh 中执行此操作时,我得到了我期望的前缀为“7m”的输出,例如
7m07.09.12-16:49:37
而不是
07.09.12-16:49:37
我还从我的终端收到警报。这是由
%S
秒数引起的,因为当我将其从命令末尾去掉时,我没有得到“7m”(但显然我错过了日期末尾的秒数)。
谁能解释为什么会发生这种情况?
编辑:额外信息:我使用的是 OS X 10.8,并且安装了 zsh 4.3.11,oh-my-zsh
一种解决方法是将代码包装在
echo $(...)
周围。它产生了正确的输出并且对我来说是可以接受的。您原来的命令如下所示:
echo $(date +%d.%m.%y-%H:%M:%S)
我遇到了同样的问题,可以通过注释 .oh-my-zsh/lib/termsupport.zsh 的第 12 行来解决它,如 https://github.com/robbyrussell/oh-my-zsh/issues 中的建议/521
我确信您已将 CTRL 字符复制到某处。 7m是复位控制码。 编辑时寻找^[[7m。
如果你只是想要时间,那么 ZSH 有一个不错的%*
如果您想要日期和时间,请尝试 RPS1='%W %*'
如果你喜欢它,就把它放在PS1或任何你喜欢的地方。
在 ZSH 中我使用这样的参数扩展:
echo ${(%):-%D{%d.%m.%y-%H:%M:%S}}
这里
(%)
开启参数扩展:-
设置用于扩展的字符串文字而不是变量%D{%d.%m.%y-%H:%M:%S}
这根据 parameter expansion