Nếu bạn làm:
stty eol =
Và sau đó chạy bản demo được đề xuất trong EDIT của bạn , bạn sẽ thấy thanh foo trong bản in của test.out . Kỷ luật dòng của thiết bị đầu cuối sẽ chuyển đầu ra của nó tới đầu đọc của nó khi nó đọc từng ký tự eol đặc biệt trong đầu vào của bạn.
Thiết bị đầu cuối chế độ chính tắc Linux - có thể được cấu hình bằng stty icanon
hoặc có thể chỉ stty sane
- xử lý các ký tự đầu vào đặc biệt sau ...
- điện tử
- mặc định:
^D
- Chấm dứt một dòng đầu vào và tuôn ra đầu ra cho đầu đọc. Bởi vì nó được xóa khỏi đầu vào, nếu nó là đầu vào dưới dạng ký tự duy nhất trên một dòng, nó được truyền dưới dạng null đọc - hoặc cuối tệp - cho người đọc.
- eol
- mặc định: chưa gán
- Cũng chấm dứt một dòng đầu vào, nhưng không bị xóa khỏi đầu vào.
- giết chết
- mặc định:
^U
- Xóa tất cả các đầu vào đệm.
- xóa
- mặc định:
^H
(hoặc có thể @
hoặc ^?
trên một số hệ thống)
- Xóa ký tự đầu vào được đệm cuối cùng.
Khi iexten cũng được thiết lập - như stty icanon iexten
hoặc, một lần nữa, có lẽ chỉ là stty sane
, một thiết bị đầu cuối Linux chuẩn cũng sẽ xử lý ...
- eol2
- mặc định: chưa gán
- Ngoài ra cũng chấm dứt một dòng đầu vào, và cũng không được loại bỏ từ đầu vào.
- người sói
- mặc định:
^W
- Xóa từ đầu vào được đệm cuối cùng .
- rprnt
- mặc định:
^R
- In lại tất cả các đầu vào đệm.
- văn bản
- mặc định:
^V
- Loại bỏ bất kỳ ý nghĩa đặc biệt nào liên quan đến kỷ luật dòng đối với ký tự đầu vào ngay sau đây.
Các ký tự này được xử lý bằng cách xóa chúng khỏi luồng đầu vào - ngoại trừ eol và eol2 , nghĩa là - và thực hiện chức năng đặc biệt được liên kết trước khi truyền luồng đã xử lý đến đầu đọc - thường là vỏ của bạn, nhưng có thể là bất kỳ nhóm quy trình tiền cảnh nào .
Các ký tự đầu vào đặc biệt khác được xử lý tương tự nhưng có thể được cấu hình độc lập với bất kỳ cài đặt icanon nào bao gồm tập isig - set like stty isig
và có lẽ cũng được bao gồm trong cấu hình lành mạnh :
- bỏ
- mặc định:
^\
- Xóa tất cả đầu vào được đệm (nếu noflsh không được đặt) và gửi SIGQUIT đến nhóm quy trình tiền cảnh - có khả năng tạo ra kết xuất lõi.
- nghi ngờ
- mặc định:
^Z
- Xóa tất cả đầu vào được đệm (nếu noflsh không được đặt) và gửi SIGTSTP đến nhóm quy trình tiền cảnh. Nhóm quy trình bị đình chỉ có thể được nối lại với một trong
kill -CONT "$!"
hoặc chỉ fg
trong một vỏ ( set -m
) được kiểm soát công việc.
- xâm nhập
- mặc định:
^C
- Xóa tất cả đầu vào được đệm (nếu noflsh không được đặt) và gửi SIGINT đến nhóm quy trình tiền cảnh.
Và bộ ixon - được định cấu hình như stty ixon
và cũng thường được bao gồm trong cấu hình sane :
- dừng lại
- mặc định:
^S
- Dừng tất cả đầu ra cho đầu đọc cho đến khi bắt đầu được đọc trong đầu vào hoặc - khi ixany cũng được đặt - ít nhất một ký tự nữa được đọc.
- khởi đầu
- mặc định:
^Q
- Khởi động lại đầu ra nếu trước đó đã bị dừng với dừng .
- Cả dừng và bắt đầu đều bị xóa khỏi đầu vào khi được xử lý, nhưng nếu đầu ra được khởi động lại do bất kỳ ký tự nào trong đầu vào khi ixany được đặt thì ký tự đó sẽ không bị xóa.
Các ký tự đặc biệt được xử lý trên các hệ thống không phải Linux khác có thể bao gồm ...
- tuôn ra
- mặc định:
^O
- Tách bỏ và loại bỏ đầu vào đệm và được loại bỏ khỏi đầu vào.
- dusp
- mặc định: chưa gán
- Xóa tất cả đầu vào được đệm chỉ khi người đọc đọc ký tự đầu vào đặc biệt được gán sau đó gửi SIGTSTP.
Và có thể...
- swtch
- mặc định
^@
(có nghĩa là \0
hay NUL
)
- Chuyển lớp tiền cảnh lớp vỏ. Để sử dụng với ứng dụng
shl
lớp vỏ trên một số hệ thống.
- Việc triển khai
shl
nhiều ptys và do đó tương thích với kiểm soát công việc thay vì hành vi phụ thuộc swtch của triển khai ban đầu có thể được tự do có trong bộ heirloom-toolchest
công cụ.
Để có một bức tranh rõ ràng hơn về cách thức và lý do (và có lẽ tại sao không) các chức năng đầu vào này được xử lý tham khảo ý kiến man 3 termios
.
Tất cả các chức năng trên có thể được chỉ định (hoặc được chỉ định lại) - khi áp dụng - như thế nào stty
function assigned-key
. Để vô hiệu hóa bất kỳ chức năng duy nhất làm . Ngoài ra, như những nỗ lực khác nhau với nhiệm cho bất kỳ chức năng line-chỉnh sửa nói trên với tất cả các GNU, AST, hoặc gia truyền của hiện thực dường như chỉ ra, bạn cũng có thể như NUL nhượng cho bất kỳ chức năng dường như tương đương với thiết lập nó để unassigned trên linux của tôi hệ thống.stty
function
^-
stty
stty
function
^@
Có thể bạn thấy tiếng vang của các ký tự này khi bạn nhập chúng (như có thể được định cấu hình w / [-] ctlecho ) , nhưng đây chỉ là một điểm đánh dấu để cho bạn biết bạn đã làm gì - chương trình nhận đầu vào của bạn không có ý kiến gì về bạn đã gõ chúng (ngoại trừ eol [2] , nghĩa là) và chỉ nhận được một bản sao đầu vào của bạn mà kỷ luật dòng đã áp dụng hiệu ứng của chúng.
Hậu quả của việc xử lý các chức năng chỉnh sửa dòng khác nhau của thiết bị đầu cuối là nó phải cần bộ đệm đầu vào ở một mức độ nào đó để hành động theo các chức năng mà bạn chỉ ra rằng nó nên - và do đó không thể có nguồn cung cấp đầu vào vô hạn có lẽ bạn bất cứ lúc nào giết . Bộ đệm dòng chính xác hơn là bộ đệm kill .
Nếu bạn đặt các ký tự eol hoặc eol2 thành một số dấu phân cách xuất hiện trong đầu vào - ví dụ ngay cả khi đó không phải là một dòng mới hoặc ký tự trả về - thì bạn sẽ chỉ có thể giết đến điểm xảy ra lần cuối và bộ đệm giết của bạn sẽ mở rộng hết mức có thể cho đến khi tiếp theo trong số này - hoặc một dòng mới (hoặc trả về nếu icrnl được đặt và igncr không) - xảy ra trong đầu vào.