ความแตกต่างระหว่าง \ e และ ^ [


15

Gilles เขียนว่า :

ตัวละคร 27 = 033 = 0x1b = ^[=\e

Demizey เขียนว่า :

^ [เป็นเพียงการนำเสนอของ ESCAPE และ \ e ถูกตีความว่าเป็นอักขระ ESCAPE จริง

จากนั้นฉันก็พบบรรทัดนี้จากบทความ TechRepublic

ตรวจสอบให้แน่ใจว่าคุณเขียนลำดับของคีย์เป็น \ e [24 ~ แทนที่จะเป็น ^ [[24 ~] นี่เป็นเพราะ ^ [ลำดับนั้นเทียบเท่ากับปุ่ม [Esc] ซึ่งแสดงโดย \ e ในเชลล์ ตัวอย่างเช่นถ้าลำดับของคีย์เป็น ^ [[OP ผลการผูกโค้ดที่จะใช้จะเป็น \ e [OP

แต่ฉันใช้การแม็พที่ใช้ ^ [แทน \ e

ดังนั้นพวกเขาจะใช้แทนกันได้? ฉันต้องใช้อันใดอันหนึ่งแทนอันอื่น

คำตอบ:


16

หากคุณดูที่มาตรฐาน ANSI ASCIIส่วนล่างของชุดอักขระ (32 ตัวแรก) จะถูกสงวนไว้ "อักขระควบคุม" (บางครั้งเรียกว่า "ลำดับหนี") เหล่านี้คือสิ่งต่าง ๆ เช่นตัวละคร NUL, Life Feed, Carriage Return, Tab, Bell และอื่น ๆ ส่วนใหญ่สามารถเลียนแบบได้โดยการกดปุ่มCtrlร่วมกับคีย์อื่น

ลำดับที่ 27 (ทศนิยม) หรือ\033ฐานแปดหรือ0x1bลำดับฐานสิบคือลำดับหนี พวกเขาทั้งหมดเป็นตัวแทนของลำดับการควบคุมเดียวกัน เชลล์ภาษาและเครื่องมือต่าง ๆ อ้างถึงลำดับนี้ในวิธีที่ต่างกัน ใช้CtrlลำดับCtrl- [เพราะฉะนั้นบางครั้งถูกแสดงเป็น^[, เป็นมือสั้น^Ctrl

คุณสามารถป้อนลำดับตัวอักษรการควบคุมเป็นลำดับดิบในบรรทัดคำสั่งของคุณโดยการดำเนินการต่อพวกเขาด้วย-Ctrl - สำหรับเชลล์และโปรแกรมส่วนใหญ่จะหยุดการตีความลำดับของคีย์ต่อไปนี้และจะแทรกในรูปแบบ raw แทน ถ้าคุณทำเช่นนี้กับทั้งคีย์หรือ- มันจะแสดงบนเปลือกหอยมากที่สุด อย่างไรก็ตามแม้ว่าลำดับนี้จะได้รับการตีความ แต่จะไม่ตัดและวางได้ง่ายและอาจลดลงเป็นลำดับอักขระที่ไม่ได้ควบคุมเมื่อพบกับโปรโตคอลหรือโปรแกรมบางอย่างvCtrlvEscapeCtrlv^[

จะได้รับรอบนี้เพื่อให้ง่ายต่อการใช้สาธารณูปโภคบางอย่างแทนลำดับ "ดิบ" ทั้งที่มี\033(โดยอ้างอิงฐานแปด) อ้างอิงฐานสิบหกหรือการอ้างอิงอักขระพิเศษ\x1b \eนี้เป็นมากเหมือนกันในทางที่\tถูกตีความว่าเป็นTab- ซึ่งโดยวิธีการที่ยังสามารถป้อนข้อมูลผ่านทางCtrl- iหรือ\nเป็นบรรทัดใหม่หรือEnterที่สำคัญซึ่งยังสามารถป้อนข้อมูลผ่านทาง-Ctrlm

ดังนั้นเมื่อ Gilles พูดว่า:

27 = 033 = 0x1b = ^ [= \ e

เขากำลังบอกว่าเลขทศนิยม ASCII 27, octal 33, hex 1b Ctrl- [และ\eเท่ากันทุกอย่างเขาหมายความว่าพวกมันทั้งหมดอ้างถึงสิ่งเดียวกัน (semantically)

เมื่อ Demizey พูด

^ [เป็นเพียงการนำเสนอของ ESCAPE และ \ e ถูกตีความว่าเป็นอักขระ ESCAPE จริง

เขาหมายถึงความหมาย แต่ถ้าคุณกดCtrl-v Ctrl - [ตรงนี้เป็นเช่นเดียวกับ\eลำดับแทรกดิบส่วนใหญ่จะได้รับการปฏิบัติในลักษณะเดียวกัน แต่ไม่รับประกันเสมอและดังนั้นจึงแนะนำให้ใช้โปรแกรมแบบพกพา\eหรือ0x1bหรือ\033ขึ้นอยู่ บนภาษา / เชลล์ / ยูทิลิตี้ที่ใช้อยู่


4

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

ในทุบตีลำดับหนี\e, \033และ\x1bการทำงานเป็นอาร์กิวเมนต์ไปprintfใน$'…'ในการแจ้งและในผูกที่สำคัญ ในการเชื่อมโยงคีย์มีไวยากรณ์ทั่วไป\C-[ที่ใช้งานได้ดียิ่งขึ้นเนื่องจากอักขระ 27 คือสิ่งที่คุณได้รับจากการพิมพ์Ctrl+ [(ไวยากรณ์นั้นเป็นการเลียนแบบการผูกคีย์ Emacs) \033ทำงานอยู่ในเปลือกหอยทั้งหมดเป็นอาร์กิวเมนต์ไปยังprintf; บริบทและสัญลักษณ์อื่น ๆ นั้นขึ้นอยู่กับเชลล์

หน้าจอไม่รู้จักลำดับการหลีกเลี่ยงใด ๆ แต่รับรู้^ว่าเป็นส่วนนำหน้าการควบคุมดังนั้น^[หมายถึงอักขระ 27

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