将 bash 输入保持在屏幕的顶行

Tom*_*ice 12 terminal tty console stty virtual-consoles

我想将bash命令提示符输入保留在屏幕顶部,以便将旧命令的输出向下推而不是向上推。

我怎样才能做到这一点?

cuo*_*glm 7

将这些行添加到您的.bashrc

prompt_on_top() {
  tput cup 0 0
  tput el
  tput el1
}

pre_cmd() {
  if [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] || [ -n "$COMP_LINE" ]; then
    return
  fi
  printf "\33[2J"
}

PROMPT_COMMAND="prompt_on_top"
trap 'pre_cmd' DEBUG
Run Code Online (Sandbox Code Playgroud)

bashPROMPT_COMMAND,它保存命令将在bash显示提示之前执行。这里我们将它设置为 function prompt_on_top,它使用tput将光标设置在屏幕顶部。

bash也有一种在执行任何命令之前执行命令的方法,使用trap来处理信号DEBUG。这里我们将它设置为 function pre_cmd,它将清除旧屏幕,并且如果我们完成了(COMP_LINE不为空)或在BASH_PROMPT.


这种方法有一个限制,如果命令输出太长太适合屏幕,那么输出将被操作覆盖prompt_on_top。在这种情况下,您需要将输出通过管道传送到寻呼机以读取整个输出。