Tambahkan baris ini ke .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
memiliki PROMPT_COMMAND , yang memegang perintah akan dieksekusi sebelum bash
show prompt. Di sini kita mengaturnya untuk berfungsi prompt_on_top
, yang menggunakan tput untuk mengatur kursor di bagian atas layar.
bash
juga memiliki cara untuk mengeksekusi perintah sebelum mengeksekusi perintah apa pun, menggunakan perangkap untuk menangani sinyal DEBUG
. Di sini kita mengaturnya untuk berfungsi pre_cmd
, yang akan menghapus layar lama, dan tidak melakukan apa-apa jika kita menyelesaikannya ( COMP_LINE tidak kosong) atau menjalankan perintah BASH_PROMPT
.
Ada batasan dengan pendekatan ini, jika output perintah terlalu panjang dan sesuai di layar, maka output akan ditimpa oleh prompt_on_top
tindakan. Dalam hal ini, Anda perlu menyalurkan output ke pager untuk membaca seluruh output.
cat
sebuah file, urutannya akan terbalik?