Không giống như bash
, ssh
dấu nhắc mật khẩu không sử dụng bất kỳ thư viện đầu vào đặc biệt nào như readline
. Các tính năng chỉnh sửa dòng chỉ là các tính năng chỉnh sửa dòng POSIX TTY cơ bản.
Vì vậy, bạn có một POSIX TTY ở chế độ "nấu" (không phải là thô), còn gọi là chế độ chính tắc và chỉnh sửa dòng duy nhất có sẵn là những gì được cung cấp bởi kernel. Xem stty(1)
, và nhận thấy rằng
kill = ^U
. Đây cũng là nơi ký tự backspace được xác định ( erase = ^?
). Word-erase ( ^W
) thuận tiện khi bạn không gõ mù.
lnext = ^V
có nghĩa là bạn có thể gõ control-v sau đó bất cứ điều gì (bao gồm control-c) để có được điều khiển theo nghĩa đen-c.
Để gỡ lỗi những gì bạn đã cố gắng làm một cách mù quáng, chạy cat
hoặc cat > /dev/null
trong thiết bị đầu cuối của bạn . Nhập nội dung, sau đó xem những gì hoạt động và những gì không chỉnh sửa nó.
readline
(được sử dụng bởi bash
) đọc ký tự thô và thực hiện chỉnh sửa dòng trong không gian người dùng. Mặc dù vậy, các ràng buộc mặc định của nó tương thích với các ký tự điều khiển TTY mặc định, cho tập hợp các tính năng chỉnh sửa mà cả hai đều cung cấp.
readline vượt xa việc chỉnh sửa dòng đơn giản của một TTY đơn giản. (ví dụ: TTY chỉ có thể xóa các ký tự ở cuối dòng, vì vậy không có ^a
và delete
hoặc mũi tên trái / phải)
Khi bash
chạy một lệnh ở nền trước, nó sẽ đặt TTY vào chế độ chính tắc trước tiên (vì đó là mặc định). Vì vậy, chạy stty -a
(không có chuyển hướng) sẽ luôn thấy thiết bị đầu cuối của chính nó trong chế độ chính tắc. Nhưng nếu bạn chuyển hướng đầu vào từ một số TTY khác bash
đang chạy trên nó, bạn có thể xem cài đặt đầu cuối bash + readline nào được áp dụng. ví dụ: stty -a < /dev/pts/12
hiển thị -icanon
cho chế độ thô vì tôi bash
đang chạy trên thiết bị đầu cuối đó. (Tôi chuyển sang một tab khác và chạy tty
, sau đó sử dụng đường dẫn tệp thiết bị đó từ thiết bị đầu cuối đầu tiên). Nếu tôi chạy cat
trong thiết bị đầu cuối khác đó, tôi sẽ thấy icanon
chế độ chính tắc.
Liên quan: TTY phá hủy
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface