Xóa một nửa màn hình khỏi dòng lệnh


11

Có một số cách xóa thiết bị đầu cuối nhưng thay vì để lại lời nhắc ở trên cùng của màn hình để nó ở giữa? Dường như clearvề cơ bản bỏ qua tất cả các tham số dòng lệnh.

Tôi nghĩ rằng sẽ có một số cách để làm điều này với tputnhưng không thể tìm thấy một.

Câu trả lời:


12

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 edkhả 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 clearkhác biệt chương trình từ tput ed:

  • nó di chuyển con trỏ đến vị trí nhà (phía trên bên trái) và
  • xóa từ điểm đó đến cuối màn hình.

Hãy cẩn thận: trên một số nền tảng tput edcó 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 đề.


trên unix, điều này không xóa văn bản cho tôi, nhưng không di chuyển con trỏ
James Owers

1
Âm thanh như một lỗi đã được sửa mười năm trước. Có lẽ thời gian để nâng cấp mọi thứ.
Thomas Dickey

0

Nếu số dòng là số lẻ thì tput cupxó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

-1

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).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.