Il carattere "tick" o "accento acuto" ´ (non `) è usato per qualcosa nella shell di Linux?


11

Sappiamo che il carattere backtick viene utilizzato per la sostituzione dei comandi :

chown `id -u` /mydir

Il che mi ha fatto meravigliare: il carattere tick è ´usato per qualcosa nella shell di Linux?


Nota: per inciso, la sostituzione dei comandi può anche essere scritta più facilmente come
chown $(id -u) /mydir


3
Non ero sicuro del nome, ma pensavo che ´si chiamasse accento acuto solo quando usato come diacritico (e, al contrario, `si chiama accento grave ). Se usato da solo, poiché quest'ultimo è un backtick , sembrava naturale che il primo fosse chiamato tick o forward tick (per favore, non chiamiamolo backtick inverso ). Ho modificato la domanda del titolo per includere la tua nota.
dr_

1
giusto. Ho rimosso il commento.
Stéphane Chazelas,

1
@ dr01 Potrebbe valere la pena inserire nel titolo qualcosa come "(non`) "per aiutare con confusione.
Captain Man,

Un personaggio dall'aspetto simile, l'apostrofo ( ', ASCII 39, U + 0027) ha significato in molte shell Unix (es. Bourne shell /bin/sh) e Linux shell (es /bin/bash.). Previene la divisione delle parole e tutte le espansioni. Quindi ls '$foo [bar]'restituisce un errore a meno che non ci sia un file chiamato $foo [bar]nella directory corrente. È equivalente a ls "\$foo [bar]"e ls \$foo\ \[bar\].
punti

1
Ci sono molti personaggi simili in Unicode, vedi cl.cam.ac.uk/~mgk25/ucs/quotes.html per un elenco incompleto e vedi en.wikipedia.org/wiki/Prime_(symbol) per altri simboli . Di tutti questi, solo i caratteri ASCII ( ', ", `) hanno un significato speciale nelle shell di Unix.
punti

Risposte:


28

I set di caratteri usati storicamente con Unix, incluso ASCII , non hanno un segno di spunta, quindi non sono stati usati. Per quanto ne so, non è stato introdotto alcun uso comune per quel personaggio da quando è diventato disponibile; né lo farebbe, poiché non è incluso nel set di caratteri portatile di POSIX .

`era apparentemente originariamente incluso in ASCII (insieme a ^ e ~) per servire da diacritico. Quando è stato definito ASCII, l'apostrofo era in genere rappresentato da un glifo di tipo "primo" ("primo", usato per minuti o piedi) piuttosto che un apostrofo dritto ", ed era anche usato come accento acuto diacritico.

Storicamente, nella documentazione della shell Unix, `è stato indicato come un accento grave , non un backtick. La mancanza di un segno di spunta in avanti non avrebbe sollevato le sopracciglia, soprattutto dal momento che veniva usato come personaggio complementare (vedi roffsintassi).


5
"Presumibilmente ´ non è stato considerato abbastanza comune per fare il taglio (nonostante il suo uso diffuso in lingue non americane)." Touché.
dr_

6
I caratteri al di fuori del set di caratteri portatili POSIX (un sottoinsieme di ASCII) non verrebbero utilizzati nella sintassi delle shell, poiché la loro codifica varia in genere tra le impostazioni locali (e potrebbe non essere presente in alcune, inclusa la locale C). Ad esempio, su un sistema GNU, ´è 0xB4 in una locale fr_FR.iso88591, 0xC2 0xB4 in una locale fr_FR.UTF-8 e non esiste nella locale C.
Stéphane Chazelas,

@ StéphaneChazelas Quello che dici rimane vero anche se fr_FRviene sostituito con qualsiasi altra lingua. La codifica del personaggio è una proprietà della codifica (ISO-8859-1 o UTF-8).
Kasperd,

2
@kasperd, sì, non intendevo implicare che la lingua facesse la differenza. La scelta è fr_FRstata arbitraria, succede solo che ho tali localizzazioni sul mio sistema. Naturalmente sarebbe lo stesso con en_GB.UTF-8...
Stéphane Chazelas il

12

Sebbene il comitato ASCII abbia considerato "come un diacritico e" come un apostrofo, la tradizione Unix era di trattarli come virgolette singole a destra e a sinistra (i personaggi che ora sono in Unicode come U + 2018 e U + 2019). Ciò è più ovvio dalla convenzione TeX secondo cui si scrive `` testo tra virgolette '' nell'origine markup e si ottiene "testo tra virgolette" nel documento formattato. Questo può essere visto anche nei caratteri monospace più vecchi, come i caratteri bitmap forniti con X11R5 e X11R6, in cui ai due caratteri sono stati assegnati glifi immagine speculare.

Pertanto, "e" erano considerati reciprocamente inversi e "non si sentiva mancare.


3
Ah sì, ricordo che la sintassi LaTeX!
dr_

1
@ dr01: che improvvisamente ha senso quando scopri che alcuni dei vecchi caratteri li hanno come specchi l'uno dell'altro.
Giosuè,

2
'è stato esplicitamente definito in ASCII come APOSTROPHE, RIGHT SINGLE QUOTATION MARK, ACUTE_ACCENT di ANSI, non è solo una cosa Unix. Non ci sono altre virgolette singole a destra in ASCII.
Stéphane Chazelas,

2
@Joshua: Il cambio di questi caratteri è stato oggetto di grandi controversie / contraccolpi quando è avvenuto (probabilmente alla fine degli anni '90 o poco dopo il 2000). Non erano solo i caratteri xterm, ma tutti i caratteri bitmap X11 standard, inclusa la bitmap Times / Helvetica / etc. utilizzato nei browser e in altre applicazioni con caratteri spaziati proporzionalmente.
R .. GitHub smette di aiutare ICE il

1
Purtroppo non c'è abbastanza contraccolpo per fermarlo! Unicode sostiene di correre dicendo a tutti che l'apostrofo ASCII è una linea verticale, in diretta contraddizione con l'esempio glifo nell'attuale standard ASCII ... e ora quasi tutti i font hanno quella stupida cosa in posizione 0x27 invece di un apostrofo dall'aspetto decente
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.