Hiển thị chú thích màn hình trên dòng đầu tiên của thiết bị đầu cuối


8

Khi tôi bắt đầu một thiết bị đầu cuối mới, lời nhắc là trên dòng đầu tiên. Sau khi làm việc một lúc (hoặc chạy một lệnh tạo ra một số đầu ra), lời nhắc nằm ở dòng cuối cùng. Có nó sẽ ở lại trong thời gian còn lại của phiên giao dịch, trừ khi tôi nhấn Ctrl- l, chạy clearhoặc resethoặc một cái gì đó tương tự.

Để có được một số biện pháp liên tục trong công việc, tôi sử dụng screenmột mẹo để hiển thị tên phiên trong chú thích (tôi sử dụng cái cuối cùng có hai screenlệnh trong .screenrc).

Để tránh chi phí nhận thức bằng cách làm lộn xộn khu vực làm việc, tôi muốn chú thích này được hiển thị ở đầu thiết bị đầu cuối.

Câu trả lời:


3

Bạn thật may mắn, màn hình thực hiện vinh dự lưu và đặt lại lệnh. Vì vậy, với bash nó có thể được thực hiện.

Điều này đưa ra hướng dẫn cách di chuyển con trỏ xung quanh với các chuỗi thoát đặc biệt. Bạn có thể viết "Xin chào thế giới!" ở góc trên cùng bên trái với điều này:

echo -e "\033[s\033[2;0HHello World!            \n                        \033[u"

Giải thích: Ký tự \033[slưu vị trí con trỏ hiện tại, đó là những gì chúng ta muốn kích thước thiết bị đầu cuối màn hình b / c có thể thay đổi, rất nhiều. Sau đó \033[2;0di chuyển con trỏ đến hàng thứ ba đến ký tự đầu tiên (chúng ta bắt đầu đếm ở góc trên cùng bên trái và bằng 0). Sau đó đến văn bản và một minh họa nhỏ về những gì có thể. Cuối cùng, mã \033[uđặt con trỏ trở lại nơi nó được phát \033[sra.

Ví dụ này di chuyển con trỏ đến hàng thứ hai vì khi ban hành lệnh 2 dòng mới được in để hàng thứ ba hiện tại sẽ là hàng đầu tiên.

Bạn có thể sử dụng điều này cùng với chú thích phiên bạn có thể nhận được bằng lời giải thích bạn đã liên kết.


2
Bạn có thể sử dụng tputđể làm điều này theo cách độc lập với thiết bị đầu cuối, mà không cần mã hóa các mã thoát đó. Ví dụ:echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)"
Jim Paris

Tôi chắc chắn rằng mọi shell đều có cách phát ra các ký tự này, nhưng tôi chỉ biết bash :-) Cảm ơn bạn đã nhập thông tin, tôi không biết về điều đó.
Bananguin

@ user1129682: Tôi đã thử screen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'screen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'không hoạt động. Có ý kiến ​​gì không?
l0b0

Phụ thuộc vào những gì bạn muốn. Nếu bạn chỉ muốn tiêu đề tắt phiên hiện tại trong chú thích màn hình của bạn thì bạn sẽ làm screen -X caption always; screen -X caption string "%t". Nếu bạn muốn tiêu đề hiện tại ở góc trên bên trái, bạn sẽ phải sửa đổi PS1biến môi trường của mình để loại trừ tputma thuật.
Bananguin

@ l0b0: và khi đọc lại điều này, tput cup 0 0 cũng có thể có vấn đề về dòng mới gấp đôi, đó là lý do tại sao tôi đặt văn bản của mình ở dòng thứ ba, không phải dòng đầu tiên. bạn đã thử tput cup 2 0 hay 0 2 chưa ... vẫn chưa đọc lên trên tput ...
Bananguin
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.