如何在控制台中写入的每个命令之前或之后运行命令?

如何在控制台中写入的每个命令之前或之后运行命令?

我想在终端中执行的每个命令之前和之后运行一个命令(即clearbefore 和 then reset)。我希望这自动发生,而不是使用短别名或类似的东西。

我研究过 bashrc 和 /usr/share/bash-completion/bash_completion,尽管后者似乎只是为了实现带有Tab? 的自动完成功能。

我应该在哪里做出更改?

答案1

在你的.bashrc

function process_command() {
  ... do something with $BASH_COMMAND ...
}
trap process_command DEBUG

欲了解典型示例,请参阅“让 gnome-terminal 显示正在运行的命令为标题“在 AskUbuntu 上。

为了解决原始海报要求clear在命令前和reset命令后运行的问题,请添加到.bashrc

function before_command() { 
  case "$BASH_COMMAND" in
        $PROMPT_COMMAND)
          ;;
       *)
          clear;
  esac
}

function before_prompt() { reset ; }

trap before_command DEBUG
PROMPT_COMMAND=before_prompt

寻找和。man bashPROMPT_COMMANDtrap .-lp

相关内容