หมายเหตุบางประการเกี่ยวกับSTTY
คำสั่งประวัติเพื่อชี้แจงความไม่ถูกต้องบางอย่างในคำตอบอื่น ๆ และความคิดเห็นที่เกี่ยวข้อง :
เทอร์มินัลก่อนหน้านี้เช่นDEC VT05หรือVT50และเครื่องเคลื่อนย้ายมวลสารก่อนหน้านั้นรองรับเฉพาะอักขระตัวพิมพ์ใหญ่เท่านั้น สิ่งที่หมายถึงคือไม่มีอักขระตัวพิมพ์เล็กที่ไม่สามารถป้อนจากพวกเขาหรือว่าพวกเขาจะไม่สามารถแสดงตัวอักษรอื่น ๆ กว่าตัวอักษรตัวพิมพ์ใหญ่
Unix เป็นแบบตัวพิมพ์เล็กและคำสั่งส่วนใหญ่จะเป็นตัวพิมพ์เล็กคุณจะเห็นว่ามีปัญหาอยู่ที่นั่น นั่นเป็นเหตุผลที่มีโหมด termio / termios พิเศษ (และยังคงมีอยู่ใน Unices ที่ทันสมัยแม้ว่าเทอร์มินัลเหล่านั้นจะหายไปนาน) เพื่อจัดการกับเหล่านั้น
termio / termios เป็นอินเทอร์เฟซรุ่นเก่าและใหม่กว่าเพื่อควบคุมไดรเวอร์ tty บน Unix ใน termio ioctl
คุณระบุอินพุตเอาต์พุตเอาต์พุตควบคุมแฟล็ก ... ที่ระบุวิธีจัดการสัญญาณไฟฟ้าบนบรรทัดอนุกรมในการจัดการกับอักขระอินพุตและเอาต์พุตและลักษณะการทำงานภายในของไดรเวอร์ wrt เช่น echo ตัวแก้ไขเส้น ... ส่วนใหญ่ใช้กับเทอร์มินัลเสมือนเช่นคอนโซล Unix VGA สมัยใหม่หรือเทอร์มินัลหลอก
อินเตอร์เฟสบรรทัดคำสั่งที่termio(s)
เป็นstty
คำสั่ง
เพื่อจัดการกับเทอร์มินัลตัวพิมพ์ใหญ่มีสามtermio(s)
แฟลกที่เกี่ยวข้อง:
IUCLC
(ป้อนตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก): อักขระที่เข้ามาจะถูกแปลงเป็นตัวพิมพ์เล็กเมื่อป้อนข้อมูล นั่นหมายถึงการส่งโดยสถานีถือเป็นA
a
นั่นหมายความว่ามีเกี่ยวกับเรื่องนี้ตอนนี้ผมสามารถพิมพ์LS
บน VT50 ของฉันและเปลือกจะอ่านจากls
/dev/ttyX
ตอนนี้ฉันยังสามารถรันstty
คำสั่งได้
- ขณะนี้ด้วย
IUCLC
คนเดียวและเทอร์มินัลecho
ในขณะที่ฉันพิมพ์LS
คนขับจะส่งls
กลับไปที่เทอร์มินัล (เพื่อให้ฉันเห็นสิ่งที่ฉันพิมพ์) ซึ่งไม่สามารถแสดงได้ดังนั้นเราจึงต้องการOLCUC
(Output Lower Case to Upper Case) นั่นคือ เราจำเป็นต้องแปลงอักษรตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ก่อนที่จะส่งไปยังเทอร์มินัล
- ตอนนี้เราสามารถใช้งาน Unix ได้จาก VT50 แต่ถ้าหากเราต้องการใส่ตัวอักษรตัวพิมพ์ใหญ่ตอนนี้ล่ะ? นั่นคือสิ่งที่
xcase
ท้องถิ่นธงมาใน. นี้จะช่วยให้ (ในโหมดการป้อนข้อมูลที่ยอมรับเท่านั้น) ส่งกรณีบนA
โดยการพิมพ์\A
และการส่งออกเป็นกรณีบนจะกลายเป็นA
\A
(อันนั้นไม่ได้ดำเนินการบน Linux)
stty
คำสั่งมีความสอดคล้องกันiuclc
, olcuc
และการตั้งค่าและนามแฝงสำหรับทั้งสาม:xcase
lcase
ตั้งค่าเริ่มต้นและสิ่งที่คุณได้รับหลังจากที่stty sane
เป็นlcase
ปิด
ดังนั้นเมื่อคุณใช้ VT50 สิ่งที่คุณต้องทำก็คือรัน:
stty lcase
เพื่อให้สามารถทำอะไรได้ แต่อย่าลืมว่าคุณจะทำอย่างนั้นได้อย่างไรเมื่อคุณสามารถส่งจดหมายตัวพิมพ์ใหญ่ได้เท่านั้น? นั่นคือสิ่งที่คุณจำเป็นต้องมีSTTY
คำสั่งเป็นชื่อแทนสำหรับstty
และที่ว่าทำไมstty
การสนับสนุนเป็นชื่อแทนสำหรับLCASE
lcase
ไม่มีSANE
นามแฝงดังกล่าวเนื่องจากคุณไม่ต้องการทำstty sane
เมื่อเทอร์มินัลของคุณเป็นตัวพิมพ์ใหญ่ทั้งหมด
หากคุณเรียกใช้stty lcase
หรือstty olcuc
โดยไม่ตั้งใจในสถานีปกติ (ลองในxterm
หรือสถานีที่ทันสมัย) นั่นคือสิ่งที่คุณต้องป้อนstty sane
เพื่อกลับสู่ปกติ แต่คุณไม่ต้องการSTTY
คำสั่งสำหรับสิ่งนั้น หากคุณพิมพ์stty sane
คุณจะเห็นSTTY SANE
เสียงสะท้อนกลับ แต่นั่นเป็นเพียงข้อความที่แสดง (ไม่ใช่คำสั่งที่ป้อน) ที่จะถูกแปลมันยังคงเป็นstty sane
คำสั่งที่จะถูกเรียกใช้
บรรดาiuclc
, olcuc
, xcase
ธงที่ใช้ในการระบุโดย POSIX (และอาจเป็นเหตุผลที่จะดำเนินการบน Linux แม้ว่าฉันจริงจังสงสัยใครเคยเชื่อมต่อใด ๆ ของอาคารเก่าที่เป็นระบบลินุกซ์ (นอกเหนือจากความสนุกสนาน)) แต่ได้ถูกลบออกใน POSIX: 2001