Câu trả lời:
Bạn có thể sử dụng tput
để di chuyển con trỏ đến một dòng nhất định trong màn hình, ví dụ:
tput cup 11 0
để di chuyển nó đến dòng thứ mười hai (giá trị được tính từ 0).
Dọc theo cùng một dòng, bạn có thể sử dụng tput
để xóa từ vị trí đó đến cuối màn hình, sử dụng ed
khả năng. Kết hợp,
tput cup 11 0 && tput ed
có thể là những gì đã muốn.
Nếu bạn muốn đi đến dấu nửa chừng trên màn hình, số đầu tiên được trả về bởi
stty size
là (trên hầu hết các hệ thống) số lượng hàng của màn hình. Thêm vào lệnh:
tput cup $(stty size|awk '{print int($1/2);}') 0 && tput ed
Các clear
khác biệt chương trình từ tput ed
:
Hãy cẩn thận: trên một số nền tảng tput ed
có thể không hoạt động do sự cố đã được khắc phục từ lâu. Trong những trường hợp đó, việc nâng cấp cấu hình lời nguyền / ncurses của bạn sẽ khắc phục vấn đề.
Nếu số dòng là số lẻ thì tput cup
xóa toàn bộ trang.
viết nó như thế này sẽ sửa nó:
tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed
Nếu bạn quan tâm đến việc xóa nửa dưới màn hình trong khi duy trì phần còn lại, thì điều này sẽ hoạt động:
half=$(stty size | awk '{print int($1/2)-1;}'); for i in `seq ${half}`; do echo '' ; done && tput cup ${half} 0 && tput ed
EDIT: Để làm rõ, nếu bạn chạy seq $(stty size | cut -d' ' -f1)
các câu trả lời khác sẽ rời nửa đầu ra, trong khi lệnh này sẽ rời nửa sau (tức là đầu ra gần đây nhất).