Nói chung, có được màu sắc hiện tại là không thể. Việc xử lý trình tự điều khiển của một thiết bị đầu cuối xảy ra "bên trong" thiết bị đầu cuối, bất cứ nơi nào xảy ra. Với một trình giả lập thiết bị đầu cuối như xterm
hoặc được tích hợp vào nhân hệ điều hành cung cấp các thiết bị đầu cuối ảo kernel, trạng thái bên trong của trình giả lập, bao gồm cả khái niệm về "biểu hiện đồ họa" hiện tại (nghĩa là màu sắc và thuộc tính), có trên máy chính nó và có thể truy cập trên lý thuyết. Nhưng đối với một thiết bị đầu cuối thực sự, thông tin này nằm ở một số vị trí RAM trên một máy riêng biệt được kết nối thông qua một liên kết nối tiếp.
Điều đó nói rằng, một số thiết bị đầu cuối bao gồm một cơ chế để đọc thông tin như là một phần của giao thức đầu cuối của chúng, được gửi qua liên kết nối tiếp đó. Chúng cung cấp các chuỗi điều khiển mà một chương trình có thể gửi đến thiết bị đầu cuối, khiến nó gửi lại thông tin về trạng thái bên trong của nó, như là đầu vào của thiết bị đầu cuối. mikeserv
đã cho bạn thấy các chuỗi điều khiển mà xterm
trình giả lập thiết bị đầu cuối đáp ứng. Nhưng đây là cụ thể xterm
. Các trình giả lập thiết bị đầu cuối tích hợp trong nhân Linux và các hạt nhân BSD khác nhau là các loại thiết bị đầu cuối khác nhau, chẳng hạn, và hoàn toàn không thực hiện bất kỳ chuỗi điều khiển nào như vậy. Điều tương tự cũng xảy ra với cả gia đình của các thiết bị đầu cuối thực sự.
Các thiết bị đầu cuối DEC VT525 thực hiện cơ chế đọc ra, nhưng có một tập hợp các chuỗi điều khiển không có mối quan hệ nào với các thiết bị được sử dụng bởi xterm
. Một người gửi chuỗi DECRQSS (Lựa chọn hoặc Cài đặt Yêu cầu) để yêu cầu hiển thị đồ họa hiện tại và thiết bị đầu cuối phản hồi bằng cách gửi DECRPSS (Chọn hoặc Cài đặt Báo cáo). Đặc biệt:
- Máy chủ gửi: DCS
$
q
m
ST (DECRQSS với phần chức năng điều khiển của SGR làm cài đặt)
- Thiết bị đầu cuối trả lời: DCS
0
$
r
0
;
3
3
;
4
4
m
ST (DECRPSS với các tham số và phần chức năng điều khiển của chuỗi điều khiển SGR đặt màu nền trước và màu nền hiện tại)
Tất nhiên, việc đọc kỹ câu hỏi của bạn cho thấy rằng bạn đang vẫy một quả chuối phủ sô cô la tại các hệ thống tiền tệ châu Âu đó một lần nữa. Những gì bạn thực sự đang cố gắng thực hiện, trong đó bạn đã chọn một giải pháp và sau đó hỏi làm thế nào để thực hiện một phần của giải pháp đó, sẽ duy trì trạng thái trước đó trong khi bạn viết một số đầu ra bị lỗi. Không chỉ có trình tự điều khiển DEC VT để thực hiện việc này, còn có trình tự thiết bị đầu cuối bảng điều khiển SCO được nhận dạng bởi xterm
các trình giả lập thiết bị đầu cuối tích hợp hạt nhân khác nhau và mục nhập termcap / terminfo cho bạn biết chúng là gì cho thiết bị đầu cuối của bạn.
Các mục termcap là sc
và rc
. Các mục terminfo là save_cursor
vàrestore_cursor
. Các tên có phần gây hiểu nhầm là có hiệu lực (mặc dù chúng hoạt động như một cảnh báo rằng bạn đang dựa vào một cái gì đó thực tế hơn là de jure ). Các trình tự điều khiển DECSC, DECRC, SCOSC và SCORC thực tế cũng lưu và khôi phục biểu hiện đồ họa hiện tại.
Cho rằng bài viết mà bạn đã chỉ là tất cả về việc tạo các chuỗi điều khiển từ các tập lệnh shell, lệnh mà bạn đang hiện đang tìm kiếm là tput
.
đọc thêm
echotc Co
hoặcechoti colors
, nhưng đơn giản là không có biến nào lưu trữ định nghĩa mã màu hiện tại.