Wird das Zeichen "Häkchen" oder "akuter Akzent" (nicht) für irgendetwas in der Linux-Shell verwendet?


10

Wir wissen, dass das Backtick-Zeichen für die Befehlssubstitution verwendet wird :

chown `id -u` /mydir

Was mich wunderte: Wird das Häkchen ´für irgendetwas in der Linux-Shell verwendet?


Hinweis: Im Übrigen kann die Befehlsersetzung auch besser lesbar geschrieben werden als
chown $(id -u) /mydir


3
Ich war mir des Namens nicht sicher, aber ich dachte, dass er ´nur dann als akuter Akzent bezeichnet wird , wenn er als diakritisch verwendet wird (und umgekehrt `als schwerwiegender Akzent bezeichnet wird ). Bei alleiniger Verwendung, da letzteres ein Backtick ist , schien es natürlich, dass erstere als Tick oder Forward-Tick bezeichnet wurde (bitte nennen wir es nicht Reverse-Backtick ). Ich habe die Titelfrage so geändert, dass sie Ihre Notiz enthält.
dr01

1
Meinetwegen. Ich habe den Kommentar entfernt.
Stéphane Chazelas

1
@ dr01 Es könnte sich lohnen, etwas wie "(nicht`) "in den Titel einzufügen, um Verwirrung zu stiften.
Captain Man

Ein ähnlich aussehendes Zeichen, das Apostroph ( ', ASCII 39, U + 0027), hat in vielen Unix-Shells (z. B. der Bourne-Shell /bin/sh) und Linux-Shells (z /bin/bash. B. ) eine Bedeutung. Es verhindert das Teilen von Wörtern und alle Erweiterungen. So ls '$foo [bar]'gibt einen Fehler zurück , es sei denn es eine Datei mit dem Namen ist $foo [bar]im aktuellen Verzeichnis. Es ist gleichbedeutend mit ls "\$foo [bar]"und ls \$foo\ \[bar\].
Punkte

1
Es gibt viele ähnlich aussehende Zeichen in Unicode. Eine unvollständige Liste finden Sie unter cl.cam.ac.uk/~mgk25/ucs/quotes.html und unter en.wikipedia.org/wiki/Prime_(symbol) weitere Symbole . Aus all diesen werden nur die ASCII - Zeichen ( ', ", `) haben eine besondere Bedeutung in Unix - Shells.
Punkte

Antworten:


28

Die in der Vergangenheit unter Unix verwendeten Zeichensätze, einschließlich ASCII , haben kein Häkchen, daher wurde es nicht verwendet. Soweit mir bekannt ist, wurde keine allgemeine Verwendung für diesen Charakter eingeführt, seit er verfügbar ist. Dies wäre auch nicht der Fall , da es nicht im tragbaren Zeichensatz von POSIX enthalten ist .

`wurde anscheinend ursprünglich in ASCII (zusammen mit ^ und ~) aufgenommen, um als diakritisch zu dienen. Wenn ASCII definiert wurde, wurde das Apostroph typischerweise durch eine Glyphe im 'Stil' ('prime', wie für Minuten oder Fuß verwendet) anstelle eines geraden Apostrophs 'dargestellt und wurde auch als diakritischer akuter Akzent verwendet.

Historisch gesehen wurde `in der Unix-Shell-Dokumentation als schwerwiegender Akzent und nicht als Backtick bezeichnet. Das Fehlen eines Vorwärts-Ticks hätte die Augenbrauen nicht hochgezogen, zumal 'als komplementäres Zeichen verwendet wurde (siehe roffSyntax).


5
"Vermutlich wurde ´ nicht als häufig genug angesehen, um den Schnitt zu machen (trotz seiner weit verbreiteten Verwendung in nichtamerikanischen Sprachen)." Touché.
dr01

6
Zeichen außerhalb des tragbaren POSIX-Zeichensatzes (eine Teilmenge von ASCII) werden in der Syntax von Shells nicht verwendet, da ihre Codierung normalerweise zwischen den Gebietsschemas variiert (und in einigen Ländern, einschließlich des Gebietsschemas C, möglicherweise nicht vorhanden ist). Auf einem GNU-System ´ist beispielsweise 0xB4 in einem Gebietsschema fr_FR.iso88591, 0xC2 0xB4 in einem Gebietsschema fr_FR.UTF-8 und im Gebietsschema C nicht vorhanden.
Stéphane Chazelas

@ StéphaneChazelas Was Sie sagen, bleibt auch dann wahr, wenn fr_FRes durch eine andere Sprache ersetzt wird. Die Codierung des Zeichens ist eine Eigenschaft der Codierung (ISO-8859-1 oder UTF-8).
Kasperd

2
@kasperd, ja, ich wollte nicht implizieren, dass die Sprache einen Unterschied macht. Die Auswahl fr_FRwar willkürlich, es kommt einfach vor, dass ich solche Gebietsschemas auf meinem System habe. Natürlich wäre es genauso mit en_GB.UTF-8...
Stéphane Chazelas

12

Obwohl das ASCII-Komitee "als diakritisch und" als Apostroph betrachtete, bestand die Unix-Tradition darin, sie als linke und rechte einfache Anführungszeichen zu behandeln (die Zeichen, die jetzt in Unicode als U + 2018 und U + 2019 enthalten sind). Dies geht aus der TeX-Konvention am deutlichsten hervor, dass Sie in die Markup-Quelle "zitierten Text" schreiben und im formatierten Dokument "zitierten Text" erhalten. Dies ist auch bei älteren Monospace-Schriftarten zu beobachten, z. B. den mit X11R5 und X11R6 gelieferten Bitmap-Schriftarten, bei denen die beiden Zeichen spiegelbildliche Glyphen erhielten.

Als solche wurden "und" als "umgekehrt" angesehen, und "wurde nicht als vermisst empfunden."


3
Ah ja, ich erinnere mich an diese LaTeX-Syntax!
dr01

1
@ dr01: Was plötzlich Sinn macht, wenn Sie feststellen, dass einige der alten Schriftarten sie als Spiegel voneinander haben.
Joshua

2
'wurde in ASCII explizit als APOSTROPHE, RIGHT SINGLE QUOTATION MARK, ACUTE_ACCENT von ANSI definiert, es ist nicht nur eine Unix-Sache. In ASCII gibt es kein anderes rechtes einfaches Anführungszeichen.
Stéphane Chazelas

2
@Joshua: Das Ändern dieser Schriftarten war eine Angelegenheit großer Kontroversen / Rückschläge, als es passierte (wahrscheinlich Ende der 90er Jahre oder kurz nach 2000). Es handelte sich nicht nur um xterm-Schriftarten, sondern um alle Standard-X11-Bitmap-Schriftarten, einschließlich der Bitmap Times / Helvetica / etc. Wird in Browsern und anderen Anwendungen mit Schriftarten mit proportionalem Abstand verwendet.
R .. GitHub STOP HELPING ICE

1
Nicht genug Spiel, um es leider zu stoppen! Unicode-Befürworter, die herumlaufen und allen sagen, dass der ASCII-Apostroph eine vertikale Linie ist, was in direktem Widerspruch zu dem Beispiel-Glyphen im aktuellen ASCII-Standard steht ... und jetzt hat fast jede Schriftart dieses dumme Ding in Position 0x27 anstelle eines anständig aussehenden Apostrophs
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.