使用 zsh 的日期命令

问题描述 投票:0回答:4

我正在尝试使用

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

date zsh
4个回答
28
投票

一种解决方法是将代码包装在

echo $(...)
周围。它产生了正确的输出并且对我来说是可以接受的。您原来的命令如下所示:

echo $(date +%d.%m.%y-%H:%M:%S)

3
投票

我遇到了同样的问题,可以通过注释 .oh-my-zsh/lib/termsupport.zsh 的第 12 行来解决它,如 https://github.com/robbyrussell/oh-my-zsh/issues 中的建议/521


0
投票

我确信您已将 CTRL 字符复制到某处。 7m是复位控制码。 编辑时寻找^[[7m。

如果你只是想要时间,那么 ZSH 有一个不错的%*

如果您想要日期和时间,请尝试 RPS1='%W %*'

如果你喜欢它,就把它放在PS1或任何你喜欢的地方。


0
投票

在 ZSH 中我使用这样的参数扩展:

echo ${(%):-%D{%d.%m.%y-%H:%M:%S}}

这里

  • (%)
    开启参数扩展
  • :-
    设置用于扩展的字符串文字而不是变量
  • %D{%d.%m.%y-%H:%M:%S}
    这根据
    parameter expansion
  • 评估日期
© www.soinside.com 2019 - 2024. All rights reserved.