Додайте ці рядки до своїх .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
також є спосіб виконати команду перед виконанням будь-якої команди, використовуючи пастку для обробки сигналу DEBUG
. Тут ми встановимо його на функцію pre_cmd
, яка очистить старий екран, і нічого не зробимо, якщо ми виконали завершення ( COMP_LINE не порожній) або запустимо команду в BASH_PROMPT
.
При такому підході є обмеження, якщо вихід команди занадто довгий занадто довгий на екрані, то вихід буде переопрацьований за prompt_on_top
дією. У цьому випадку вам потрібно передати висновок пейджеру, щоб прочитати весь вихід.
cat
файл, це було б змінити порядок?