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

Kat*_*atu 7 command-line bash

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

我已经研究了 bashrc 和 /usr/share/bash-completion/bash_completion 虽然后者似乎只是为了自动完成功能Tab

我应该在哪里进行更改?

Ale*_*exP 10

在您的.bashrc

function process_command() {
  ... do something with $BASH_COMMAND ...
}
trap process_command DEBUG
Run Code Online (Sandbox Code Playgroud)

有关一个很好的示例,请参阅AskUbuntu 上的“使 gnome-terminal 显示作为标题运行的命令”。

解决原发帖人要求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
Run Code Online (Sandbox Code Playgroud)

man bash寻找PROMPT_COMMANDtrap .-lp