![每个 bash 命令前的命令](https://linux22.com/image/1232886/%E6%AF%8F%E4%B8%AA%20bash%20%E5%91%BD%E4%BB%A4%E5%89%8D%E7%9A%84%E5%91%BD%E4%BB%A4.png)
有人知道在 bash 会话中的每个命令前放置“time”命令的方法吗?
答案1
抱歉之前的回答错误,我误解了你的问题。
要在 shell 上执行的每个命令前添加时间,你可以执行以下操作
bind 'RETURN: "\e[1~time \e[4~\n"'
这将重新绑定回车键。现在,每次按下回车键而不是输入换行符 \n 时,它都会转到行首,输入文本“time”和一个空格,然后转到行尾并输入换行符 \n,从而产生所需的效果。
如果你不想牺牲你的 Enter 键,你可以通过绑定这样的命令来创建一个“第二个”基准输入键,比如 F12
bind '"\e[24~": "\e[1~time \e[4~\n"'
现在,您无需替换回车键,只需绑定 F12 即可。
这一切的背景是 bash 使用 GNU readline 来读取命令。因此 readline 将是进一步进行命令操作等的良好起点。
答案2
我意识到这超出了这个问题的范围但是......
在zsh
(据我所知,这是 bash 的超集)中如果您在文件中设置以下变量.zshrc
:
export REPORTTIME=5
每一个执行时间超过 5 秒的命令(我很确定)都会显示 的输出time
。所有完成时间更快的命令都不会显示。在那些情况下,人们并不真正关心,所以最好不要把事情弄得一团糟。还有许多其他很酷的功能,zsh
您可能会喜欢它。
答案3
PS1似乎是做这样的事情的标准方法。
答案4
在提示字符串中包含 \t。它将在提示中包含时间的位置。请参阅: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/