Một vài lưu ý về STTY
mệnh lệnh lịch sử để làm rõ một số điểm không chính xác trong câu trả lời khác và các bình luận liên quan :
Các thiết bị đầu cuối trước đó như DEC VT05 hoặc VT50 và các máy in từ xa trước đó chỉ hỗ trợ các ký tự chữ hoa. Điều đó có nghĩa là không có ký tự chữ thường nào có thể được nhập từ chúng hoặc chúng sẽ không thể hiển thị bất kỳ chữ cái nào khác ngoài chữ in hoa.
Unix là trường hợp nhạy cảm và hầu hết các lệnh là chữ thường, bạn có thể thấy có vấn đề ở đó. Đó là lý do tại sao có các chế độ termio / termios đặc biệt (và vẫn còn đó trong các Unice hiện đại mặc dù các thiết bị đầu cuối đó đã qua lâu) để xử lý chúng.
termio / termios tương ứng là các giao diện cũ hơn và mới hơn để điều khiển trình điều khiển tty trên Unix. Trong một thuật ngữ ioctl
, bạn chỉ định cờ đầu vào, đầu ra, cờ điều khiển ... chỉ định cách xử lý tín hiệu điện trên đường nối tiếp vào các ký tự đầu vào và đầu ra và hành vi bên trong của trình điều khiển ghi lại những thứ như echo, trình chỉnh sửa dòng ... Hầu hết các ứng dụng này áp dụng cho các thiết bị đầu cuối ảo như bảng điều khiển VGA hiện đại hoặc thiết bị đầu cuối giả.
Giao diện dòng lệnh termio(s)
là stty
lệnh.
Để xử lý các thiết bị đầu cuối chữ hoa, có ba termio(s)
cờ liên quan:
IUCLC
(Chữ hoa viết thường thành chữ thường): các ký tự đến được chuyển thành chữ thường khi nhập. Điều đó có nghĩa là việc A
gửi bởi thiết bị đầu cuối được coi là a a
. Điều đó có nghĩa là với điều này, bây giờ tôi có thể gõ LS
trên VT50 của mình và trình bao sẽ đọc ls
từ đó /dev/ttyX
. Bây giờ tôi cũng có thể chạy stty
lệnh.
- Bây giờ, với
IUCLC
một mình và thiết bị đầu cuối echo
, trong khi tôi nhập LS
, trình điều khiển sẽ gửi ls
lại cho thiết bị đầu cuối (vì vậy tôi có thể thấy những gì tôi nhập) mà nó không thể hiển thị, vì vậy chúng tôi cũng cần OLCUC
(Đầu ra chữ thường cho chữ hoa), đó là chúng ta cần chuyển đổi bất kỳ chữ in thường thành chữ hoa trước khi gửi đến thiết bị đầu cuối.
- Bây giờ, chúng ta có thể vận hành Unix từ VT50, nhưng nếu chúng ta muốn nhập các ký tự chữ hoa thì sao? Đó là nơi cờ
xcase
cục bộ xuất hiện. Điều này cho phép (chỉ ở chế độ đầu vào chính tắc) gửi chữ hoa A
bằng cách nhập \A
và trên đầu ra, chữ hoa A
được hiển thị dưới dạng \A
. (cái đó không được triển khai trên Linux)
Các stty
lệnh có tương ứng iuclc
, olcuc
và xcase
các thiết lập và một bí danh cho cả ba: lcase
. Cài đặt mặc định và những gì bạn nhận được sau khi stty sane
là lcase
tắt.
Vì vậy, khi bạn đang sử dụng VT50, tất cả những gì bạn cần làm là chạy:
stty lcase
để có thể làm bất cứ điều gì. Nhưng chờ đã, làm thế nào để bạn làm điều đó khi bạn chỉ có thể gửi chữ hoa? Đó là nơi bạn cần một STTY
lệnh làm bí danh stty
và đó là lý do tại sao stty
hỗ trợ LCASE
như một bí danh cho lcase
.
Không có SANE
bí danh nào như vậy bởi vì bạn không muốn làm gì stty sane
khi thiết bị đầu cuối của bạn là chữ hoa.
Nếu bạn chạy stty lcase
hoặc stty olcuc
do nhầm lẫn trên một thiết bị đầu cuối bình thường (thử trong xterm
hoặc bất kỳ thiết bị đầu cuối hiện đại nào), đó là nơi bạn cần nhập stty sane
để trở lại bình thường. Nhưng bạn không cần một STTY
lệnh cho điều đó. Nếu bạn nhập stty sane
, bạn sẽ thấy tiếng STTY SANE
vang trở lại, nhưng đó chỉ là văn bản được hiển thị (không phải lệnh đã nhập) sẽ được dịch, đó vẫn là stty sane
lệnh sẽ được chạy.
Những iuclc
, olcuc
, xcase
cờ thường được xác định bởi POSIX (và có lẽ đó là lý do tại sao nó được thực hiện trên Linux mặc dù tôi nghiêm túc nghi ngờ ai bao giờ kết nối bất kỳ của những thiết bị đầu cuối cũ sang một hệ thống Linux (trừ cho vui)), nhưng đã bị loại bỏ trong POSIX: 2001.