我想将bash
命令提示符输入保留在屏幕顶部,以便旧命令的输出向下而不是向上推。
我怎样才能实现这个目标?
答案1
将这些行添加到您的.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
bash
有提示命令,其中保存的命令将在bash
显示提示符之前执行。这里我们将其设置为 function prompt_on_top
,它使用输出将光标设置在屏幕顶部。
bash
还有一种方法可以在执行任何命令之前执行命令,使用陷阱来处理信号DEBUG
。这里我们将其设置为 function pre_cmd
,这将清除旧屏幕,并且如果我们完成了则不执行任何操作(COMP_LINE不为空)或运行命令BASH_PROMPT
。
这种方法有一个限制,如果命令输出太长而无法适应屏幕,那么输出将被prompt_on_top
操作覆盖。在这种情况下,您需要将输出通过管道传输到分页器以读取整个输出。