我可以将 bash 配置为在控制台中键入每个命令之前执行“清除”吗?

syn*_*gma 26 bash prompt terminal console

我想将 bash 配置为clear每次在终端中键入命令时(在执行我的命令之前)执行命令。我怎样才能做到这一点?

我正在使用 Debian Linux。

Gil*_*il' 25

Bash 有一个 precommand hook。有点。

preexec () {
  clear
}
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return                     # do nothing if completing
    [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
    local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`; # obtain the command from the history, removing the history number at the beginning
    preexec "$this_command"
}
trap 'preexec_invoke_exec' DEBUG
Run Code Online (Sandbox Code Playgroud)


rus*_*ush 6

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

之后,每次按下return而不是只写\n它都会移动到行首,输入文本clear;,然后移动到末尾并按\n预期输入。

  • 换行符无论如何都会导致打印提示,因此将 clear 放在提示中可以完成同样的事情,*不会*用“clear”命令污染命令历史记录。 (2认同)
  • @jw013 不同之处在于,在我的情况下,`clear` 在命令和命令输出不会消失之前执行。但是,如果有提示,它确实如此。 (2认同)