<Trước | Nội dung | Tiếp theo>
Di chuyển con trỏ
Mã thoát có thể được sử dụng để định vị con trỏ. Điều này thường được sử dụng để cung cấp đồng hồ hoặc một số loại thông tin khác tại một vị trí khác trên màn hình, chẳng hạn như góc trên mỗi khi lời nhắc được vẽ. Đây là danh sách các mã thoát xuất hiện trên con trỏ:
Bảng 13-4: Trình tự thoát di chuyển con trỏ
Escape Code Action
\ 033 [l;cH Di chuyển con trỏ đến dòng l và cột c
\ 033 [nA Di chuyển con trỏ lên n dòng
\ 033 [nB Di chuyển con trỏ xuống n dòng
\ 033 [nC Di chuyển con trỏ về phía trước n nhân vật
\ 033 [nD Di chuyển con trỏ về phía sau n nhân vật
\ 033 [2J Xóa màn hình và di chuyển con trỏ đến góc trên bên trái (dòng 0, cột 0)
\ 033 [K Xóa từ vị trí con trỏ đến cuối dòng hiện tại
\ 033 [s Lưu vị trí con trỏ hiện tại
\ 033 [u Nhớ lại vị trí con trỏ đã lưu
Sử dụng các mã trên, chúng tôi sẽ tạo một lời nhắc vẽ một thanh màu đỏ ở đầu màn hình có chứa đồng hồ (được hiển thị bằng văn bản màu vàng) mỗi khi lời nhắc được hiển thị. Mã cho lời nhắc là chuỗi trông đáng gờm này:
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\ u @ \ h \ W> \ $ "
PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]
<\ u @ \ h \ W> \ $ "
Hãy xem xét từng phần của chuỗi để xem nó làm gì:
Di chuyển con trỏ
Bảng 13-5: Phân tích chuỗi dấu nhắc phức tạp
Hành động theo trình tự
Hành động theo trình tự
\[ Bắt đầu một chuỗi ký tự không in. Mục đích của việc này là cho phép bash tính toán đúng kích thước của lời nhắc hiển thị. Nếu không có một phép tính chính xác, các tính năng chỉnh sửa dòng lệnh không thể định vị con trỏ một cách chính xác.
\ 033 [s Lưu vị trí con trỏ. Điều này là cần thiết để quay lại vị trí nhắc sau khi thanh và đồng hồ đã được vẽ ở đầu màn hình. Hãy lưu ý rằng một số trình giả lập đầu cuối không nhận ra mã này.
\ 033 [0; 0H Di chuyển con trỏ đến góc trên bên trái, là dòng 0, cột 0.
\ 033 [0; 41m Đặt màu nền thành đỏ.
\ 033 [K Xóa từ vị trí con trỏ hiện tại (góc trên cùng bên trái) đến cuối dòng. Vì màu nền bây giờ là màu đỏ, nên đường kẻ sẽ bị xóa theo màu đó, tạo ra thanh của chúng ta. Lưu ý rằng việc xóa đến cuối dòng không thay đổi vị trí con trỏ, vị trí này vẫn ở góc trên bên trái.
\ 033 [1; 33m Đặt màu văn bản thành màu vàng.
\t Hiển thị thời gian hiện tại. Mặc dù đây là phần tử “in”, chúng tôi vẫn đưa nó vào phần không in của lời nhắc, vì chúng tôi không muốn bash bao gồm đồng hồ khi tính toán kích thước thực của lời nhắc được hiển thị.
\ 033 [0m Tắt màu. Điều này ảnh hưởng đến cả văn bản và nền.
\ 033 [u Khôi phục vị trí con trỏ đã lưu trước đó.
\] Kết thúc chuỗi ký tự không in.
<\ u @ \ h \ W> \ $ Chuỗi lời nhắc.
<Trước | Nội dung | Tiếp theo>