zsh - zsh:在执行命令旁边打印时间
问题描述
我想将 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"
}
但它会在 和等基本命令上中断并打印{
和字符。它还会在密码提示(macOS 终端)上中断。例如:%
cat
echo
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"
}
推荐阅读
- excel - 如何使用 VBA 将多个 Excel 工作表合并为一个 Excel 工作表
- html - 应用fixed时背景图不会覆盖,不应用时不会垂直覆盖
- scala - Int 类是抽象的;无法实例化
- hp-uft - HP ALM 卡在“等待统一功能测试...”状态
- python - python3列表减法问题 - 错误列表不可调用
- javascript - 电话号码验证功能问题
- c - read(...): read 会记住变化吗?
- mysql - 自加入 - 当我尝试进行自加入时,我的查询显示匹配和不匹配的值
- python - 带有 Tensorflow 的神经网络不会更新权重/偏差
- django - 使用 python+django+gunicorn + worker 无法启动 Gcloud 应用程序部署失败