Perché il carattere circumflex / caret viene utilizzato come simbolo per Ctrl?


18

Ho iniziato a utilizzare la console Linux molto tempo fa, ma non mi sono mai interrogato sul personaggio circonflesso aka caret ( ^). Vorrei chiedere perché è usato come sostituto della parola Ctrl.

Ci ho pensato l'altro giorno mentre stavo usando nano e ho anche cercato di vedere se c'erano delle risposte su internet, ma quello che ho trovato erano solo domande su "cosa è" e "cosa rappresenta".

Ci sono delle ragioni storiche? O viene da una strana convenzione?


2
Anche l'originale vi(almeno quello in SunOS 3.5) utilizzava un punto di inserimento / circonflesso davanti alle lettere per riproporre Ctrl-C, Ctrl-V, ecc. E lo sttyfaceva anche. D'altra parte, ha ^funzionato come sinonimo di |script shell durante quell'epoca, quindi dovresti sempre ricambiare il cursore nelle sttyinvocazioni. Buona domanda.
Bruce Ediger,

1
Se dovessi indovinare, direi che potrebbe avere qualcosa a che fare con il fatto che Shift, Control e Meta (così come i loro simili meno noti come Super e Hyper) sono tutti tasti modificatori, di cui Control è probabilmente il più comunemente usato. Dal momento che la maggior parte dei caratteri 'Le versioni maiuscole possono essere semplicemente digitate, (ad esempio 3/ #), ^potrebbe essere una scorciatoia visiva per un diverso tipo di' spostamento ', per così dire. Il fatto che per la maggior parte dei tasti / caratteri digitabili, Ctrl spenga semplicemente il 64 bit del personaggio può anche essere correlato - ^essendo una scorciatoia per NOT (0x40).
DopeGhoti,

Risposte:


11

Il circumflex ( ^) era equiparato al carattere di freccia in alto sulle teleprinters. Quando arrivarono SunOS e così via, questa parte era più di 10 anni in passato. Lo stesso carattere (sostituzione) è stato usato nelle espressioni matematiche, ad esempio, ^per i poteri (dove alcuni potrebbero usare **). Era anche usato in Pascal per indicare i puntatori.

Utilizzato per indicare i caratteri di controllo, questa data (almeno) prima del 1980. Puoi trovarla usata nella documentazione DEC per esempio (era certamente in uso a metà degli anni '70 quando ho usato teco. Il manuale Utilities del 1973 (pagina 927) mostra un controlCper esempio.

Alla ricerca di una fonte adatta, trovo Teletypewriter Communication Codes di Gil Smith che dice abbastanza per collocarlo alla fine degli anni '60 (dimostrando che l'origine è anche pre-Unix):

ASCII-63 era per lo più identico all'attuale versione ASCII-67. Le definizioni dei caratteri di controllo (col-1 sopra) variavano tra le due versioni, come definito di seguito. Inoltre, in ASCII-63, le 32 posizioni superiori (col-4) erano indefinite, ad eccezione di tre: RUB (0x7F), ACK (0x7C) e ESC (0x7E). Ci sono riferimenti incoerenti a un carattere ALT-MODE (0x7D) in ASCII-63. Nella versione del 1967, RUB divenne DEL e rimase nella stessa posizione, ma ACK ed ESC si spostarono nell'area dei personaggi di controllo (col-1). In ASCII-67, ^ ha sostituito il simbolo della freccia su e _ ha sostituito la freccia sinistra

ASCII-63 e ASCII-67 sono le varianti comuni di ASCII, ma sembrano esserci state anche alcune versioni transitorie: nel manuale Teletype Model 33, ci sono riferimenti a una versione del 1965 di ASCII, che aveva SS al posto di SUB (0x1A), \ for @ (0x40), ~ for \ (0x5C), un carattere dispari al posto di | (0x7C) e | per ~ (0x7E). Una scheda di codice Teletype per macchine M33 e M35 indica una versione di ASCII del 1966, sebbene i caratteri stampabili mostrati sulla carta fossero identici in tutte le versioni.

Questo era ben noto, a causa dei problemi di interscambio di file tra diverse codifiche come ASCII ed EBCDIC dove c'erano ancora stampanti in grado di eseguire il rendering di frecce su così a lungo dopo che il carattere non esisteva più in ASCII.


1
0x5e essendo una freccia in su prima di essere ^spiegato anche perché quel personaggio è stato usato come operatore di pipe nella shell Unix originale (trasmette l'idea del flusso di dati da un comando all'altro). La shell Bourne tratta ancora ^come un operatore di pipe alternativo (suppongo per la retrocompatibilità con la shell Thomson).
Stéphane Chazelas,

sì - i uparrows erano troppo utili per lasciar perdere, con ASCII. Questo mi ricorda anche qualche altro legame diretto con la tastiera, ma non ho trovato alcuna immagine da illustrare.
Thomas Dickey,

1
0x9 (TAB) è di solito rappresentato come ^I, 0x89 come M-^I, 0xc9 come M-I, 0xe9 come M-i. Ora se un personaggio è mai stato usato per rappresentare Meta al posto di M-?
Stéphane Chazelas,

Non per caso: non ho prestato molta attenzione a super / meta / hyper perché quando sono stati introdotti, si sono applicati solo ad alcuni terminali che la maggior parte non ha mai visto.
Thomas Dickey,
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.