Tom*_*ice 12 terminal tty console stty virtual-consoles
我想将bash命令提示符输入保留在屏幕顶部,以便将旧命令的输出向下推而不是向上推。
我怎样才能做到这一点?
将这些行添加到您的.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)
bash有PROMPT_COMMAND,它保存命令将在bash显示提示之前执行。这里我们将它设置为 function prompt_on_top,它使用tput将光标设置在屏幕顶部。
bash也有一种在执行任何命令之前执行命令的方法,使用trap来处理信号DEBUG。这里我们将它设置为 function pre_cmd,它将清除旧屏幕,并且如果我们完成了(COMP_LINE不为空)或在BASH_PROMPT.
这种方法有一个限制,如果命令输出太长太适合屏幕,那么输出将被操作覆盖prompt_on_top。在这种情况下,您需要将输出通过管道传送到寻呼机以读取整个输出。