ซึ่งแตกต่างจากbash
, ssh
's สอบถามรหัสผ่านไม่ได้ใช้ห้องสมุดขั้วอินพุตใด ๆ readline
เป็นพิเศษเช่น คุณลักษณะการแก้ไขบรรทัดเป็นเพียงคุณสมบัติการแก้ไขบรรทัดพื้นฐาน POSIX TTY
ดังนั้นคุณมี POSIX TTY ในโหมด "สุก" (ไม่ใช่แบบดิบ), โหมดมาตรฐานหรือที่รู้จักและการแก้ไขบรรทัดเดียวที่มีให้คือสิ่งที่เคอร์เนลจัดทำ ดูและแจ้งให้ทราบว่าstty(1)
kill = ^U
นี่คือตำแหน่งที่อักขระ backspace ถูกกำหนด ( erase = ^?
) การลบคำ ( ^W
) สะดวกเมื่อคุณไม่ได้พิมพ์คนตาบอด
lnext = ^V
หมายความว่าคุณสามารถพิมพ์ control-v ตามด้วยอะไรก็ได้ (รวมถึง control-c) เพื่อรับตัวอักษร -c
การแก้ปัญหาสิ่งที่คุณกำลังพยายามที่จะทำสุ่มสี่สุ่มห้าทำงานcat
หรือcat > /dev/null
ในสถานีของคุณ พิมพ์รายการแล้วดูว่าอะไรทำงานได้บ้างและไม่ต้องแก้ไข
readline
(ใช้โดยbash
) อ่านอักขระดิบและทำการแก้ไขบรรทัดในพื้นที่ผู้ใช้ การเชื่อมโยงเริ่มต้นนั้นเข้ากันได้กับอักขระควบคุม TTY ที่เป็นค่าเริ่มต้นสำหรับชุดย่อยของคุณลักษณะการแก้ไขที่ทั้งสองมีให้
readline ก้าวไปไกลกว่าการแก้ไขบรรทัดอย่างง่าย ๆ ของ TTY ธรรมดา (เช่น TTY สามารถลบตัวอักษรที่ท้ายบรรทัดเพื่อให้ไม่มี^a
และdelete
หรือลูกศรซ้าย / ขวา)
เมื่อbash
เรียกใช้คำสั่งในเบื้องหน้าจะทำให้ TTY เข้าสู่โหมด canonical ก่อน (เพราะนั่นคือค่าเริ่มต้น) ดังนั้นการเรียกใช้stty -a
(โดยไม่มีการเปลี่ยนเส้นทาง) จะเห็นเทอร์มินัลของตัวเองในโหมด canonical เสมอ แต่ถ้าคุณเปลี่ยนเส้นทางการป้อนข้อมูลจาก TTY อื่น ๆ ที่bash
ทำงานอยู่คุณสามารถดูว่าการตั้งค่าเทอร์มินัล bash + readline ถูกนำไปใช้อย่างไร เช่นstty -a < /dev/pts/12
แสดงให้เห็นถึง-icanon
โหมด raw เพราะฉันมีการbash
ทำงานบนสถานีนั้น (ฉันสลับไปที่แท็บอื่นแล้ววิ่งtty
จากนั้นใช้เส้นทางของไฟล์อุปกรณ์นั้นจากเทอร์มินัลแรก) ถ้าฉันวิ่งเข้าไปcat
ในเทอร์มินัลอื่นนั้นฉันจะเห็นicanon
โหมด canonical
ที่เกี่ยวข้อง: TTY demystified
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface