每个 bash 命令前的命令

每个 bash 命令前的命令

有人知道在 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/

相关内容