每个 bash 命令之前的命令

jth*_*nes 22 bash shell command-line

有谁知道在 bash 会话中的每个命令之前放置“时间”命令的方法吗?

Luk*_*che 41

抱歉之前回答错误,我误解了您的问题。

要在 shell 上执行的每个命令之前添加时间,您可以执行以下操作

bind 'RETURN: "\e[1~time \e[4~\n"'
Run Code Online (Sandbox Code Playgroud)

这将重新绑定返回键。现在每次按回车而不是写换行符 \n 它将转到行首,输入文本 'time' 和一个空格,转到行尾并输入换行符 \n 从而产生所需的影响。

如果你不想牺牲你的回车键,你可以通过绑定这样的命令来制作一个像 F12 这样的“第二个”基准输入键

bind '"\e[24~": "\e[1~time \e[4~\n"'
Run Code Online (Sandbox Code Playgroud)

现在不是替换返回键,而是绑定 F12。

这一切的背景是 bash 使用 GNU readline 来读取命令。因此 readline 将是进一步命令操作等的良好起点。


小智 7

我意识到这超出了这个问题的范围,但是......

zsh如果您在.zshrc文件中设置以下变量,则在(据我所知,这是一组超级 bash):

export REPORTTIME=5
Run Code Online (Sandbox Code Playgroud)

每个需要超过 5 秒(我很确定)的命令都会显示time. 所有完成得更快的命令都不会。在这些情况下,人们并不真正关心,所以最好不要把事情弄得一团糟。还有许多其他很酷的功能zsh,您在使用时可能会喜欢。