อักขระ“ เห็บ” หรือ“ เน้นสำเนียงเฉียบพลัน” ´(ไม่ใช่ `) ใช้สำหรับทุกอย่างในเชลล์ Linux หรือไม่?


11

เรารู้ว่าตัวอักษร backtick ใช้สำหรับการทดแทนคำสั่ง :

chown `id -u` /mydir

สิ่งใดที่ทำให้ฉันสงสัย: มีการ´ใช้อักขระติ๊กกับสิ่งใดในเปลือก Linux หรือไม่


หมายเหตุ: โดยบังเอิญการทดแทนคำสั่งยังสามารถเขียนได้ง่ายขึ้นเช่น
chown $(id -u) /mydir


3
ฉันไม่แน่ใจในชื่อ แต่ฉันคิด´ว่าเรียกว่าสำเนียงเฉียบพลันเฉพาะเมื่อใช้เป็นเครื่องหมายกำกับเสียง (และตรงกันข้าม`เรียกว่าสำเนียงหลุมฝังศพ ) เมื่อใช้คนเดียวเนื่องจากหลังเป็นbacktickจึงเป็นเรื่องธรรมดาที่คนแรกจะเรียกเห็บหรือเห็บไปข้างหน้า (โปรดอย่าเรียกว่าย้อนกลับย้อนหลัง ) ฉันได้แก้ไขคำถามชื่อเรื่องเพื่อรวมบันทึกย่อของคุณแล้ว
dr_

1
ยุติธรรมเพียงพอ ฉันได้ลบความคิดเห็น
Stéphane Chazelas

1
@ dr01 มันอาจคุ้มค่าที่จะตั้งชื่อเรื่องเช่น "(ไม่ใช่`) "เพื่อช่วยในการสับสน
Captain Man

Apostrophe ( ', ASCII 39, U + 0027) มีความหมายคล้ายกับอักขระในเครื่องหมายอัญประกาศเดี่ยว(เช่น Bourne เชลล์/bin/sh) และ Linux shell (เช่น/bin/bash) มันป้องกันการแยกคำและการขยายทั้งหมด ดังนั้นls '$foo [bar]'จะส่งกลับข้อผิดพลาดเว้นแต่จะมีไฟล์ชื่อ$foo [bar]ในไดเรกทอรีปัจจุบัน มันเท่ากับการและls "\$foo [bar]" ls \$foo\ \[bar\]
pts

1
มีอักขระที่มีลักษณะคล้ายกันหลายตัวใน Unicode ให้ดูcl.cam.ac.uk/~mgk25/ucs/quotes.htmlสำหรับรายการที่ไม่สมบูรณ์และดูen.wikipedia.org/wiki/Prime_(symbol)สำหรับสัญลักษณ์เพิ่มเติม . จากทั้งหมดเหล่านี้เพียงตัวอักษร ASCII ( ', ", `) มีความหมายพิเศษในเปลือกหอย Unix
pts

คำตอบ:


28

ชุดอักขระที่ใช้ในอดีตกับ Unix รวมถึงASCIIไม่มีอักขระติ๊กดังนั้นจึงไม่ได้ใช้ เท่าที่ฉันทราบว่าไม่มีการใช้งานทั่วไปสำหรับตัวละครตัวนั้นเพราะมันมีวางจำหน่ายแล้ว หรือจะมันตั้งแต่มันไม่ได้รวมอยู่ในPOSIX ของชุดอักขระแบบพกพา

`เห็นได้ชัดว่าเดิมถูกรวมอยู่ใน ASCII (พร้อมด้วย ^ และ ~) เพื่อทำหน้าที่เป็นเครื่องหมายกำกับเสียง เมื่อกำหนด ASCII แล้วเครื่องหมายอะโพสโทรฟีมักถูกแทนด้วย gly-style glyph (“ ไพร์ม”, ซึ่งใช้สำหรับนาทีหรือฟุต) แทนที่จะเป็นอะโพสโทรฟีโดยตรงและใช้เป็นสำเนียงเฉียบพลันที่กำกับได้ด้วย

ในอดีตในเอกสารเชลล์ Unix `ถูกอ้างถึงว่าเป็นสำเนียงที่ร้ายแรงไม่ใช่ backtick การขาดเครื่องหมายขีดไปข้างหน้าจะไม่ทำให้เกิดคิ้วขึ้นโดยเฉพาะอย่างยิ่งเมื่อ 'ถูกใช้เป็นอักขระเสริม (ดูroffไวยากรณ์)


5
"สันนิษฐานว่า ´ไม่ถือว่าเป็นเรื่องธรรมดาพอที่จะทำให้บาดแผล (แม้จะมีการใช้กันอย่างแพร่หลายในภาษาที่ไม่ใช่ชาวอเมริกัน)" Touch?
dr_

6
อักขระภายนอกชุดอักขระแบบพกพา POSIX (ชุดย่อยของ ASCII) จะไม่ถูกใช้ในไวยากรณ์ของเชลล์เนื่องจากการเข้ารหัสจะแตกต่างกันระหว่างโลแคล (และอาจไม่พบในบางภาษารวมถึงโลแคล C) ตัวอย่างเช่นในระบบ GNU ´คือ 0xB4 ใน fr_FR.iso88591 locale, 0xC2 0xB4 ใน fr_FR.UTF-8 และไม่มีอยู่ใน C locale
Stéphane Chazelas

@ StéphaneChazelasสิ่งที่คุณพูดยังคงเป็นจริงแม้ว่าfr_FRจะถูกแทนที่ด้วยภาษาอื่น ๆ การเข้ารหัสของอักขระเป็นคุณสมบัติของการเข้ารหัส (ISO-8859-1 หรือ UTF-8)
kasperd

2
@kasperd ใช่ฉันไม่ได้ตั้งใจจะแปลว่าภาษาสร้างความแตกต่าง ทางเลือกของfr_FRมันเป็นสิ่งที่เกิดขึ้นโดยพลการมันเกิดขึ้นฉันมีที่ตั้งดังกล่าวในระบบของฉัน แน่นอนว่ามันจะเหมือนกันกับen_GB.UTF-8...
Stéphane Chazelas

12

ถึงแม้ว่าคณะกรรมการ ASCII จะคิดว่า `เป็นการออกเสียงและ 'เป็นเครื่องหมายอะโพสโทรฟี แต่ประเพณีของ Unix ก็คือการใช้เครื่องหมายอัญประกาศซ้ายและขวาเดี่ยว สิ่งนี้ชัดเจนที่สุดจากการประชุม TeX ที่คุณเขียน `` ข้อความที่ยกมา '' ในแหล่งมาร์กอัปและคุณจะได้รับ "ข้อความที่ยกมา" ในเอกสารที่จัดรูปแบบ สิ่งนี้สามารถเห็นได้ในฟอนต์ monospace แบบเก่าเช่นฟอนต์บิตแมปที่มาพร้อมกับ X11R5 และ X11R6 ซึ่งตัวละครทั้งสองได้รับร่ายมนตร์ภาพสะท้อนในกระจก

เช่นนี้ `และ 'ถูกพิจารณาว่าเป็นสิ่งที่ตรงกันข้ามกันและ´ ก็ไม่ได้หายไปไหน


3
อาใช่ฉันจำได้ว่าไวยากรณ์ของ LaTeX!
dr_

1
@ dr01: ซึ่งทันใดนั้นก็สมเหตุสมผลเมื่อคุณค้นพบบางฟอนต์เก่าให้มันเป็นกระจกของกันและกัน
Joshua

2
'ได้รับการกำหนดไว้อย่างชัดเจนใน ASCII เป็นAPOSTROPHE, เครื่องหมายคำพูดเดียวที่ถูกต้อง, ACUTE_ACCENTโดย ANSI ไม่ใช่เป็นเพียงยูนิกซ์เท่านั้น ไม่มีเครื่องหมายคำพูดเดี่ยวอื่น ๆ ที่ถูกต้องใน ASCII
Stéphane Chazelas

2
@ โจชัว: การเปลี่ยนแปลงของแบบอักษรดังกล่าวเป็นเรื่องของความขัดแย้งครั้งใหญ่ / ฟันเฟืองเมื่อมันเกิดขึ้น (อาจจะเป็นช่วงปลายยุค 90 หรือหลังจาก 2000) มันไม่ใช่แค่ฟอนต์ xterm แต่เป็นฟอนต์บิตแมป X11 มาตรฐานทั้งหมดรวมถึงบิตแมป Times / Helvetica / etc ใช้ในเบราว์เซอร์และแอปพลิเคชั่นอื่น ๆ ที่มีแบบอักษรเป็นสัดส่วน
.. GitHub หยุดช่วย ICE

1
ฟันเฟืองไม่เพียงพอที่จะหยุดมันน่าเสียดาย! Unicode ประชาสัมพันธ์วิ่งไปรอบ ๆ บอกทุกคน apostrophe ASCII เป็นเส้นแนวตั้งในความขัดแย้งโดยตรงกับตัวอย่างสัญลักษณ์ในมาตรฐาน ASCII ที่เกิดขึ้นจริง ... และตอนนี้เกือบทุกตัวอักษรมีสิ่งที่โง่ในตำแหน่ง 0x27 แทนดีมอง apostrophe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.