zsh:执行时命令旁边的打印时间
我想将zsh配置为将每个命令开始的时间附加到行命令执行的时间。例如:zsh:执行时命令旁边的打印时间,zsh,Zsh,我想将zsh配置为将每个命令开始的时间附加到行命令执行的时间。例如: # before I press ENTER $ ./script # after I press enter $ ./script [15:55:58] Running script... 我提出了以下配置(也将时间戳涂成黄色): 但它会在基本命令(如cat和echo)上中断并打印{和%字符。它还会在密码提示(macOS终端)上中断。例如,使用echo: $ echo "hello" [15:55:58] hello"
# before I press ENTER
$ ./script
# after I press enter
$ ./script [15:55:58]
Running script...
我提出了以下配置(也将时间戳涂成黄色):
但它会在基本命令(如cat
和echo
)上中断并打印{
和%
字符。它还会在密码提示(macOS终端)上中断。例如,使用echo
:
$ echo "hello" [15:55:58]
hello"hello" %{%}
如何修复此配置?
谢谢。你启发了我,基于你的脚本,我写了我的。我已经在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"
}
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"
}