ถ้าคุณทำ:
stty eol =
และเรียกใช้การสาธิตแนะของคุณแก้ไขคุณจะเห็นบาร์ fooในงานพิมพ์ของtest.out วินัยในสายการผลิตของเทอร์มินัลจะล้างออกไปยังเครื่องอ่านในขณะที่อ่านeol char แต่ละรายการในอินพุตของคุณ
เทอร์มินัลโหมดโหมดบัญญัติ - ตามที่สามารถกำหนดค่าด้วยstty icanon
หรืออาจเป็นเพียงstty sane
- จัดการอักขระอินพุตพิเศษต่อไปนี้ ...
- EOF
- ค่าเริ่มต้น:
^D
- ยุติบรรทัดอินพุตและส่งเอาต์พุตไปยังตัวอ่าน เนื่องจากถูกลบออกจากอินพุตหากอินพุตเป็นอักขระตัวเดียวบนบรรทัดมันจะถูกส่งเป็นnullอ่าน - หรือสิ้นสุดไฟล์ - ไปยังตัวอ่าน
- EOL
- เริ่มต้น: ไม่ได้รับมอบหมาย
- ยุติบรรทัดอินพุตด้วย แต่จะไม่ถูกลบออกจากอินพุต
- ฆ่า
- ค่าเริ่มต้น:
^U
- ลบอินพุตบัฟเฟอร์ทั้งหมด
- ลบ
- ค่าเริ่มต้น:
^H
(หรืออาจ@
หรือ^?
ในบางระบบ)
- ลบอักขระอินพุตบัฟเฟอร์สุดท้าย
เมื่อiextenถูกตั้งค่าเช่น - stty icanon iexten
หรืออาจเป็นอีกครั้งstty sane
เทอร์มินัล Linux ที่เป็นที่ยอมรับก็จะจัดการ ...
- eol2
- ค่าเริ่มต้น: ไม่ได้กำหนด
- นอกจากนี้ยังยุติบรรทัดอินพุตและยังไม่ถูกลบออกจากอินพุต
- werase
- ค่าเริ่มต้น:
^W
- ลบสุดท้ายอินพุตบัฟเฟอร์คำ
- rprnt
- ค่าเริ่มต้น:
^R
- พิมพ์อินพุตบัฟเฟอร์ทั้งหมดอีกครั้ง
- lnext
- ค่าเริ่มต้น:
^V
- ลบความสำคัญเป็นพิเศษใด ๆ เท่าที่มีระเบียบวินัยในบรรทัดสำหรับอักขระอินพุตที่ตามมาทันที
ตัวละครเหล่านี้ได้รับการจัดการโดยการเอาพวกเขาจากการสตรีมใส่ - ยกเว้นEOLและeol2ที่เป็น - และการแสดงที่เกี่ยวข้องฟังก์ชั่นพิเศษก่อนที่จะผ่านกระแสการประมวลผลต่อผู้อ่าน - ซึ่งมักจะเป็นเปลือกของคุณ แต่อาจจะเป็นสิ่งที่กลุ่มกระบวนการเบื้องหน้าคือ .
อักขระอินพุตพิเศษอื่น ๆ ที่ได้รับการจัดการในทำนองเดียวกัน แต่สามารถกำหนดค่าได้อย่างอิสระจากการตั้งค่าicanonใด ๆรวมถึงชุดisig - set like stty isig
และอาจรวมอยู่ในการกำหนดค่าsane :
- เลิก
- ค่าเริ่มต้น:
^\
- ล้างอินพุตบัฟเฟอร์ทั้งหมด(หากไม่ได้ตั้งค่าnoflsh )และส่ง SIGQUIT ไปยังกลุ่มกระบวนการส่วนหน้า - อาจสร้างคอร์ดัล
- susp
- ค่าเริ่มต้น:
^Z
- ล้างอินพุตบัฟเฟอร์ทั้งหมด(หากไม่ได้ตั้งค่าnoflsh )และส่ง SIGTSTP ไปยังกลุ่มกระบวนการส่วนหน้า กลุ่มกระบวนการที่ถูกระงับอาจกลับมาทำงานต่อได้ด้วย
kill -CONT "$!"
หรือfg
ในเชลล์ควบคุมงาน( set -m
)
- intr
- ค่าเริ่มต้น:
^C
- ล้างอินพุตบัฟเฟอร์ทั้งหมด(หากไม่ได้ตั้งค่าnoflsh )และส่ง SIGINT ไปยังกลุ่มกระบวนการส่วนหน้า
และชุดixon - กำหนดค่าเช่นเดียวกับstty ixon
และมักจะรวมอยู่ในการตั้งค่าสติ :
- หยุด
- ค่าเริ่มต้น:
^S
- หยุดเอาต์พุตทั้งหมดไปยังตัวอ่านจนกว่าจะเริ่มต้นการอ่านอินพุตหรือ - เมื่อตั้งค่าixany - อ่านอักขระอย่างน้อยหนึ่งตัว
- เริ่มต้น
- ค่าเริ่มต้น:
^Q
- เอาท์พุทเตะถ้ามันได้รับก่อนหน้านี้หยุดหยุด
- ทั้งหยุดและเริ่มต้นจะถูกลบออกจากอินพุตเมื่อประมวลผล แต่ถ้าเอาต์พุตถูกรีสตาร์ทเนื่องจากอักขระใด ๆ ในอินพุตเมื่อตั้งค่าixanyดังนั้นอักขระนั้นจะไม่ถูกลบออก
อักขระพิเศษที่จัดการกับระบบที่ไม่ใช่ Linux อื่น ๆ อาจรวมถึง ...
- เปี่ยม
- ค่าเริ่มต้น:
^O
- สลับการทิ้งและการลบอินพุตบัฟเฟอร์และถูกลบออกจากอินพุต
- dsusp
- ค่าเริ่มต้น: ไม่ได้กำหนด
- ล้างอินพุตบัฟเฟอร์ทั้งหมดเฉพาะเมื่อผู้อ่านอ่านอักขระอินพุตพิเศษที่กำหนดจากนั้นส่ง SIGTSTP
และอาจ ...
- swtch
- เริ่มต้น
^@
(ความหมาย\0
หรือNUL
)
- สวิทช์เบื้องหน้าเปลือกชั้น สำหรับใช้กับแอ็พพลิเคชัน
shl
เชลล์เลเยอร์ในบางระบบ
- การติดตั้ง
shl
มัลติเพล็กซ์ ptys และดังนั้นจึงเข้ากันได้กับการควบคุมงานมากกว่าพฤติกรรมการพึ่งพาswtchของการติดตั้งใช้งานดั้งเดิมสามารถทำได้อย่างอิสระในheirloom-toolchest
ชุดเครื่องมือ
สำหรับภาพที่ชัดเจนของวิธีการและเหตุผล(และอาจจะทำไมไม่)man 3 termios
ฟังก์ชั่นการป้อนข้อมูลเหล่านี้ได้รับการจัดการให้คำปรึกษา
ทุกฟังก์ชั่นดังกล่าวข้างต้นสามารถกำหนด(หรือพระราชเสาวนีย์) - เมื่อบังคับ - stty
function assigned-key
เช่น เพื่อปิดการใช้งานฟังก์ชั่นใด ๆ เดียว อีกวิธีหนึ่งคือความพยายามต่างๆที่มีการมอบหมายงานใด ๆ ของฟังก์ชั่นสายการแก้ไขดังกล่าวมีทั้งหมดของ GNU, AST หรือมรดกตกทอดของการใช้งานดูเหมือนจะแสดงให้คุณยังสามารถเป็นNULมอบหมายสำหรับการทำงานใด ๆ ที่ดูเหมือนว่าจะถือเอาการตั้งค่าให้ไม่ได้มอบหมายบน linux ของฉัน ระบบ.stty
function
^-
stty
stty
function
^@
อาจเป็นไปได้ว่าคุณเห็นเสียงสะท้อนของตัวละครเหล่านี้เมื่อคุณพิมพ์(ตามที่สามารถกำหนดค่าด้วย w / [-] ctlecho )แต่นี่เป็นเพียงเครื่องหมายที่จะแสดงให้คุณเห็นว่าคุณทำที่ไหน - โปรแกรมที่รับอินพุตของคุณไม่มีความคิดว่า พิมพ์พวกเขา(ยกเว้นeol [2]นั่นคือ)และรับเฉพาะสำเนาของอินพุตของคุณที่ระเบียบวินัยของบรรทัดใช้เอฟเฟกต์ของพวกเขา
ผลของการจัดการเทอร์มินัลของฟังก์ชั่นการแก้ไขสายต่าง ๆ คือมันจะต้องมีบัฟเฟอร์อินพุตในระดับหนึ่งเพื่อที่จะดำเนินการกับฟังก์ชั่นที่คุณระบุว่าควรและ - ดังนั้นจึงไม่มีอุปทานที่ไม่ จำกัด คุณอาจได้ตลอดเวลาฆ่า บรรทัดบัฟเฟอร์มีมากขึ้นอย่างแม่นยำฆ่าบัฟเฟอร์
ถ้าคุณตั้งค่าEOLหรือeol2ตัวอักษรเพื่อคั่นบางอย่างที่เกิดขึ้นในการป้อนข้อมูล - แม้ว่าไม่เป็นบรรทัดใหม่หรือตัวอักษรกลับเช่น - แล้วคุณจะสามารถที่จะฆ่าได้ถึงจุดที่มันเกิดขึ้นที่ผ่านมาของคุณและฆ่าบัฟเฟอร์ จะขยายเท่าที่จะสามารถทำได้จนกระทั่งต่อไปของเหล่านี้ - หรือขึ้นบรรทัดใหม่(หรือผลตอบแทนถ้าicrnlมีการตั้งค่าและigncrไม่ได้) - เกิดขึ้นในการป้อนข้อมูล