เครื่องหมายวงเล็บเหลี่ยมตัวยึดสี่เหลี่ยมจตุรัส A ^ [[- มันหมายความว่าอะไร?


13

ขออภัยหากมีการถามไปแล้ว แต่ฉันไม่รู้ว่าจะหาตัวเองได้อย่างไร - เมื่อฉันค้นหา "^ [[A" ในเครื่องมือค้นหาใด ๆ มันจะไม่สนใจส่วน "^ [[" ทั้งหมด)

อย่างไรก็ตามคำถามของฉัน: บางครั้งใน terminal (สำหรับ Mac) เมื่อฉันกดปุ่มลูกศรตัวอักษร "^ [[A", "^ [[B", "^ [[C" หรือ "^ [[D" ปรากฏขึ้น) . ฉันดูเหมือนจะจำการเผชิญหน้าเมื่อหลายปีก่อนเมื่อใช้ DOS (เป็นไปได้มากที่สุด) เช่นกันและฉันคิดว่ามันเกิดขึ้นบ่อยขึ้นเช่นกัน

ทำไมสิ่งนี้ถึงเกิดขึ้นและพวกมันหมายถึงอะไร?

คำตอบ:


20

เหล่านี้เป็นANSI รหัสหนี ^[หมายถึง ESC (หลบหนี) ตัวอักษรถัดไป[เป็นจริงวงเล็บเหลี่ยมซ้ายและตัวอักษรที่แสดงให้เห็นการทำงานของรหัสหลบหนี Esc[ส่วนหนึ่งที่เรียกว่า CSI (ควบคุมลำดับผู้แนะนำ) ดังนั้นลำดับCSI Aหมายถึงลูกศรขึ้นหรือ CUU (CUrsor Up)

อย่างไรก็ตามชุดรูปแบบนี้ย้อนกลับไปยังช่วงเวลาของจอแสดงผลVT100 (เปิดตัวในปี 1978) ลำดับการหลบหนีบางส่วนที่ใช้โดย VT100 นั้นได้มาตรฐานโดย ANSI ในช่วงต้นทศวรรษ 1980 และยังคงใช้งานทั่วไปตั้งแต่นั้นมา

โดยปกติเมื่อคุณกดปุ่มลูกศรบางโปรแกรม (พูดว่าเชลล์) กำลังฟังและสามารถดำเนินการกับพวกเขาได้ ดังนั้นเมื่อคุณกดปุ่มลูกศรขึ้นมันจะย้อนกลับไปที่ประวัติคำสั่งของคุณ อย่างไรก็ตามหากโปรแกรมกำลังทำงานที่ไม่เข้าใจลำดับการหลบหนีสำหรับปุ่มลูกศรพวกเขามักจะจบลงด้วยการสะท้อนกลับไปที่เทอร์มินัลเหมือนกับปุ่มอื่น ๆ ที่คุณอาจพบ นั่นคือเหตุผลที่บางครั้งคุณเห็น^[[Aว่าคุณกดปุ่มลูกศรขึ้น


มันก็คุ้มค่าที่ชี้ให้เห็นว่า ^ เป็นหลักการทั่วไปของ UNIX ที่จะแสดง "การควบคุม" ในเครื่องเทอร์มินัล ตัวอย่างเช่นหากคุณต้องกด Ctrl + A และมันจะถูกเพิกเฉยในลักษณะเดียวกันมันจะแสดงเป็น "^ A" Ctrl + [เป็นคำพ้องความหมายสำหรับอักขระเลี่ยง สิ่งที่ทำให้สิ่งนี้เกิดขึ้นตั้งแต่แรกคืออะไร ซอฟต์แวร์ตัวไหนตัดสินใจพิมพ์คาเร็ต? เป็นเทอร์มินัลอีมูเลเตอร์หรืออย่างอื่นที่ฉันไม่ทราบหรือไม่?
Muzer

@ Muzer เคอร์เนลทำการจัดรูปแบบอักขระที่มีเครื่องหมายสะท้อน คุณลักษณะนี้สามารถปิดได้ด้วยstty -echoctl

เคอร์เนล ที่น่าสนใจฉันไม่ทราบว่ามันลึกมาก (ถึงแม้จะอยู่ในเหตุการณ์หลังเหตุการณ์มันควรจะชัดเจนเพราะมันเกิดขึ้นในช่วงเริ่มต้นของการบูต!)
Muzer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.