Le caractère «tick» ou «accent aigu» ´ (pas `) est-il utilisé pour quelque chose dans le shell Linux?


11

Nous savons que le caractère backtick est utilisé pour la substitution de commande :

chown `id -u` /mydir

Ce qui m'a fait me demander: le caractère tick est-il ´utilisé pour quoi que ce soit dans le shell Linux?


Remarque: accessoirement, la substitution de commande peut également être écrite de manière plus lisible
chown $(id -u) /mydir


3
Je n'étais pas sûr du nom, mais je pensais que l' ´on appelle accent aigu uniquement lorsqu'il est utilisé comme diacritique (et, inversement, `est appelé accent grave ). Lorsqu'il est utilisé seul, car ce dernier est un backtick , il semblait naturel que le premier soit appelé un tick ou un tick avant (veuillez ne pas l'appeler backtick inversé ). J'ai modifié la question du titre pour inclure votre note.
dr_

1
C'est suffisant. J'ai supprimé le commentaire.
Stéphane Chazelas

1
@ dr01 Il pourrait être utile de mettre dans le titre quelque chose comme "(pas`) "pour éviter la confusion.
Captain Man

Un caractère d'apparence similaire, l'apostrophe ( ', ASCII 39, U + 0027) a une signification dans de nombreux shells Unix (par exemple, le Bourne /bin/sh) et Linux (par exemple /bin/bash). Il empêche le fractionnement des mots et toutes les extensions. Renvoie donc ls '$foo [bar]'une erreur sauf s'il existe un fichier nommé $foo [bar]dans le répertoire courant. C'est équivalent à ls "\$foo [bar]"et ls \$foo\ \[bar\].
pts

1
Il existe de nombreux caractères similaires dans Unicode, voir cl.cam.ac.uk/~mgk25/ucs/quotes.html pour une liste incomplète, et voir en.wikipedia.org/wiki/Prime_(symbol) pour plus de symboles . De tous ceux - ci, seuls les caractères ASCII ( ', ", `) ont une signification particulière dans les shells Unix.
pts

Réponses:


28

Les jeux de caractères utilisés historiquement avec Unix, y compris ASCII , n'ont pas de caractère de sélection, il n'a donc pas été utilisé. Pour autant que je sache, aucune utilisation courante de ce personnage n'a été introduite depuis qu'il est disponible; pas plus, car il n'est pas inclus dans le jeu de caractères portable de POSIX .

`a apparemment été inclus à l'origine dans ASCII (avec ^ et ~) pour servir de diacritique. Lorsque ASCII a été défini, l'apostrophe était généralement représentée par un glyphe de style ′ («prime», utilisé pour les minutes ou les pieds) plutôt que par une apostrophe droite », et était également utilisée comme accent aigu diacritique.

Historiquement, dans la documentation du shell Unix, `était considéré comme un accent grave , pas comme un backtick. L'absence d'une tique vers l'avant n'aurait pas soulevé les sourcils, d'autant plus que 'a été utilisé comme caractère complémentaire (voir roffsyntaxe).


5
"Vraisemblablement ´ n'était pas considéré comme assez courant pour faire la coupe (malgré son utilisation répandue dans les langues non américaines)." Touché.
dr_

6
Les caractères en dehors du jeu de caractères portable POSIX (un sous-ensemble de ASCII) ne seraient pas utilisés dans la syntaxe des shells, car leur codage varierait généralement entre les paramètres régionaux (et pourrait ne pas être trouvé dans certains, y compris les paramètres régionaux C). Par exemple, sur un système GNU, ´est 0xB4 dans une locale fr_FR.iso88591, 0xC2 0xB4 dans une fr_FR.UTF-8 et n'existe pas dans la locale C.
Stéphane Chazelas

@ StéphaneChazelas Ce que vous dites reste vrai même s'il fr_FRest remplacé par une autre langue. L'encodage du caractère est une propriété de l'encodage (ISO-8859-1 ou UTF-8).
kasperd

2
@kasperd, oui, je ne voulais pas laisser entendre que la langue faisait une différence. Le choix de fr_FRétait arbitraire, il se trouve que j'ai de tels paramètres régionaux sur mon système. Bien sûr, ce serait pareil avec en_GB.UTF-8...
Stéphane Chazelas

12

Bien que le comité ASCII ait pensé `` comme un diacritique et '' comme une apostrophe, la tradition Unix était de les traiter comme des guillemets simples gauche et droite (les caractères qui sont maintenant en Unicode comme U + 2018 et U + 2019). Cela est plus évident d'après la convention TeX que vous écrivez du «texte entre guillemets» dans la source de balisage et que vous obtenez du «texte entre guillemets» dans le document formaté. Cela peut également être vu dans les polices monospace plus anciennes, telles que les polices bitmap fournies avec X11R5 et X11R6, où les deux caractères ont reçu des glyphes d'image miroir.

En tant que tels, «et» étaient considérés comme l'inverse l'un de l'autre, et «ne semblait pas manquer.


3
Ah oui, je me souviens de cette syntaxe LaTeX!
dr_

1
@ dr01: Ce qui est soudainement logique lorsque vous découvrez que certaines des anciennes polices les ont comme miroirs les unes des autres.
Joshua

2
'a été explicitement défini en ASCII comme APOSTROPHE, RIGHT SINGLE QUOTATION MARK, ACUTE_ACCENT par ANSI, ce n'est pas seulement une chose Unix. Il n'y a pas d' autre guillemet simple droit en ASCII.
Stéphane Chazelas

2
@Joshua: Le changement de ces polices a été un sujet de controverse / contrecoup majeur quand il s'est produit (probablement à la fin des années 90 ou peu après 2000). Ce n'était pas seulement des polices xterm, mais toutes les polices bitmap standard X11, y compris le bitmap Times / Helvetica / etc. utilisé dans les navigateurs et autres applications avec des polices à espacement proportionnel.
R .. GitHub STOP HELPING ICE

1
Pas assez de jeu pour l'arrêter malheureusement! Unicode préconise de dire à tout le monde que l'apostrophe ASCII est une ligne verticale, en contradiction directe avec l'exemple de glyphe dans la norme ASCII actuelle ... et maintenant presque toutes les polices ont cette chose stupide en position 0x27 au lieu d'une apostrophe d'apparence décente
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.