Добавьте эти строки в ваш .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
иметь PROMPT_COMMAND , который удерживает команду, будет выполнена перед bash
приглашением показа. Здесь мы устанавливаем его в функцию prompt_on_top
, которая использует tput для установки курсора в верхней части экрана.
bash
также есть способ выполнить команду перед выполнением любой команды, используя trap для обработки сигнала DEBUG
. Здесь мы устанавливаем его в функцию pre_cmd
, которая будет очищать старый экран и ничего не делать, если мы сделали завершение ( COMP_LINE не пусто) или запустили команду BASH_PROMPT
.
У этого подхода есть ограничение: если вывод команды слишком длинный и не помещается на экране, вывод будет переопределен prompt_on_top
действием. В этом случае вам нужно передать вывод на пейджер, чтобы прочитать весь вывод.
cat
файл, это будет обратный порядок?