เพิ่มบรรทัดเหล่านี้ใน.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
ไฟล์มันจะกลับคำสั่ง?