【问题标题】:zsh: print time next to command on executezsh:执行命令旁边的打印时间
【发布时间】:2020-05-16 08:15:41
【问题描述】:

我想配置 zsh 以将每个命令开始的时间附加到执行行命令旁边。例如:

# before I press ENTER
$ ./script

# after I press enter
$ ./script [15:55:58]
Running script...

我想出了以下配置(也将时间戳染成黄色):

preexec () {
  TIME=`date +"[%H:%M:%S] "`
  echo -e "$1 %{$fg[yellow]%}\033[1A\033[1C${TIME}$reset_color"
}

但它会在catecho 等基本命令上中断并打印{% 字符。它还会在密码提示(macOS 终端)上中断。例如echo:

$ echo "hello" [15:55:58] 
hello"hello" %{%}

如何修复此配置? 谢谢。

【问题讨论】:

    标签: zsh


    【解决方案1】:

    您启发了我,并根据您的脚本编写了我的脚本。我已经在 zsh 5.4.smth 上测试过了。

    preexec () {
      local TIME=`date +"[%H:%M:%S] "`
      local zero='%([BSUbfksu]|([FK]|){*})'
      local PROMPTLEN=${#${(S%%)PROMPT//$~zero/}}
      echo "\033[1A\033[$(($(echo -n $1 | wc -m)+$PROMPTLEN))C $fg[blue]${TIME}$reset_color"
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-12
      • 1970-01-01
      • 2012-02-28
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多