เทอร์มินัลไดรเวอร์ของเคอร์เนล ( termios
) ตีความคีย์พิเศษที่สามารถพิมพ์เพื่อส่งสัญญาณไปยังกระบวนการส่งจุดสิ้นสุดของไฟล์ลบตัวอักษร ฯลฯ นี่คือการทำงานของเคอร์เนล Unix ขั้นพื้นฐานและคล้ายกันมากในการใช้งาน Unix และ Linux
stty
คำสั่งแสดงหรือชุดtermios
ตัวอักษรพิเศษเช่นเดียวกับพารามิเตอร์อื่น ๆ สำหรับคนขับรถสายขั้ว
เรียกใช้stty -a
เพื่อดูค่าปัจจุบันของอักขระพิเศษและ "การตั้งค่าสายเทอร์มินัล" อื่น ๆ ในตัวอย่างต่อไปนี้คุณจะเห็นว่าintr
เป็นCtrl+ C, eof
เป็นCtrl+ D, susp
เป็น+Ctrl Z(ฉันได้ลบเอาต์พุตอื่นเพื่อแสดงเฉพาะการตั้งค่าอักขระพิเศษ):
stty -a
ตัวอักษรพิเศษบน GNU / Linux:
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
stty -a
อักขระพิเศษใน FreeBSD:
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ^@; eol2 = ^@;
erase = ^?; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
ในการเปลี่ยนค่าของอักขระพิเศษตัวอย่างเช่นเมื่อต้องการเปลี่ยนอักขระอินเตอร์รัปต์จากCtrl+ Cเป็นCtrl+ Eเรียกใช้stty
เช่นนี้ ( ^E
เป็นอักขระสองตัวอักษรคือ circumflex ( ^
) ตามด้วยตัวอักษรE
):
stty intr '^E'
สำหรับข้อมูลเพิ่มเติมโปรดดูที่หน้าคนสำหรับและstty
termios
ใน GNU / Linux คุณสามารถดูที่tty_ioctl
หน้า man
หมายเหตุ:
intr
สำคัญ ( Ctrl+ Cค่าเริ่มต้น), ไม่จริงฆ่ากระบวนการ แต่ทำให้เกิดเคอร์เนลที่จะส่งสัญญาณขัดจังหวะ ( SIGINT
) กับกระบวนการทั้งหมดภายในกลุ่มกระบวนการ กระบวนการอาจจัดให้จับหรือไม่สนใจสัญญาณ แต่กระบวนการส่วนใหญ่จะยุติซึ่งเป็นพฤติกรรมเริ่มต้น
เหตุผลที่Ctrl+ dคุณออกจากระบบเป็นเพราะคนขับรถเทอร์มินัลส่ง EOF (สิ้นสุดไฟล์) บนอินพุตมาตรฐานของเชลล์ เชลล์ออกเมื่อได้รับจุดสิ้นสุดไฟล์บนเป็นอินพุตมาตรฐาน
bind -p
ทำรายการเช่นเดียวhelp bind
กับคนอื่น