gpt4 book ai didi

bash - 将进程执行时间包含在 shell 提示符中

转载 作者:行者123 更新时间:2023-11-29 09:12:27 24 4
gpt4 key购买 nike

是否可以将刚刚完成的进程的执行时间——“时间”命令的输出——包含到命令提示符中?我们在 Linux 机器上使用 zsh,在 Windows 机器上使用 bash (msys),所以如果知道如何在这两种机器上使用它会很好。

最佳答案

对于 zsh,您可以尝试使用 $REPORTTIME 变量(在 man zshall 中搜索)。它不会将时间放入提示中,但会在每次执行命令后回显时间(在某些情况下不起作用)。您可以使用 preexecprecmd Hook 以及 $SECONDS 变量来获取执行时间(但不是太精确):

function preexec() {
typeset -gi CALCTIME=1
typeset -gi CMDSTARTTIME=SECONDS
}
function precmd() {
if (( CALCTIME )) ; then
typeset -gi ETIME=SECONDS-CMDSTARTTIME
fi
typeset -gi CALCTIME=0
}
PS1='${ETIME} %'

(注意 PS1 定义中使用的单引号。)

第三种方法要么迫使您放弃更改环境变量的能力,要么仅适用于单个命令。它还将迫使您编写一些骇人听闻的东西来查看命令输出。这种方法是“重新定义 accept-line zle widget 以将 time 添加到执行的命令中”。我不是在这里编写代码,因为它存在上述问题。

顺便说一句,$SECONDS 变量在 bash 中也可用,尽管我不知道如何在那里实现 Hook 。

关于bash - 将进程执行时间包含在 shell 提示符中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com