Thêm những dòng này vào .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
có PROMPT_COMMAND , việc giữ lệnh sẽ được thực thi trước khi bash
hiển thị dấu nhắc. Ở đây chúng ta đặt nó là chức năng prompt_on_top
, trong đó sử dụng tput để thiết lập con trỏ ở phía trên cùng của màn hình.
bash
cũng có cách để thực thi lệnh trước khi thực hiện bất kỳ lệnh nào, sử dụng bẫy để xử lý tín hiệu DEBUG
. Ở đây chúng tôi đặt nó thành chức năng pre_cmd
, nó sẽ xóa màn hình cũ và không làm gì nếu chúng tôi đã hoàn thành ( COMP_LINE không trống) hoặc chạy lệnh trong BASH_PROMPT
.
Có một hạn chế với cách tiếp cận này, nếu đầu ra lệnh quá dài quá phù hợp trong một màn hình, thì đầu ra sẽ được ghi đè bằng prompt_on_top
hành động. Trong trường hợp này, bạn cần đặt đầu ra cho máy nhắn tin để đọc toàn bộ đầu ra.
cat
một tập tin, nó sẽ được đảo ngược thứ tự?