Warum wird das Zirkumflex- / Caret-Zeichen als Symbol für Strg verwendet?

18

Ich habe vor langer Zeit angefangen, die Linux-Konsole zu verwenden, aber ich habe mich nie über den Circumflex aka Caret-Charakter ( ^) befragt . Ich möchte fragen, warum es als Ersatz für das Wort verwendet wird Ctrl.

Ich habe neulich darüber nachgedacht, als ich Nano verwendet habe, und ich habe auch nach Antworten im Internet gesucht, aber ich habe nur Fragen zu "Was ist das?" Und "Was ist das?" Gefunden.

Gibt es historische Gründe? Oder kommt es aus einer merkwürdigen Konvention?

Giacomo Cerquone
quelle
2
Sogar das Original vi(zumindest das in SunOS 3.5) verwendete ein Caret / Circumflex vor den Buchstaben, um Strg-C, Strg-V usw. darzustellen, sttyund tut dies auch. Dagegen ^war es |in dieser Zeit ein Synonym für in Shell-Skripten, sodass Sie bei sttyAufrufen immer einen Backslash für das Caret verwenden müssen . Gute Frage.
Bruce Ediger
1
Wenn ich raten müsste, würde ich sagen, dass dies möglicherweise damit zu tun hat, dass Shift, Control und Meta (sowie deren weniger bekannte Elemente wie Super und Hyper) Modifikatortasten sind, von denen Control ist wahrscheinlich die am häufigsten verwendete. Da die Shifted-Versionen der meisten Zeichen einfach eingegeben werden können (z. B. 3/ #), ^kann dies sozusagen eine visuelle Abkürzung für eine andere Art von Shift sein. Die Tatsache, dass bei den meisten tippbaren Tasten / Zeichen die Strg-Taste nur die 64-Bit-Zeichen ausschaltet, kann auch damit zusammenhängen - ^als Abkürzung für NOT (0x40).
DopeGhoti

Antworten:

11

Der Zirkumflex ( ^) wurde auf Ferndruckern mit dem Pfeil nach oben gleichgesetzt. Als SunOS usw. auf den Markt kam, lag dieser Teil mehr als 10 Jahre zurück. Das gleiche Zeichen (Ersetzung) wurde in mathematischen Ausdrücken verwendet, z. B. ^für Potenzen (wo andere möglicherweise verwenden **). Es wurde auch in Pascal verwendet, um Zeiger anzuzeigen.

Wird zur Angabe von Steuerzeichen verwendet und datiert (mindestens) vor 1980. Sie finden es beispielsweise in der DEC-Dokumentation (es wurde sicherlich Mitte der 1970er Jahre verwendet, als ich teco verwendete. Das Dienstprogramm-Handbuch von 1973 (Seite 927)). zeigt controlCzum Beispiel ein.

Auf der Suche nach einer geeigneten Quelle finde ich Teletypewriter Communication Codes von Gil Smith, die genug aussagen, um diese in den späten 1960er Jahren zu platzieren (was zeigt, dass der Ursprung auch vor Unix liegt):

ASCII-63 war größtenteils identisch mit der aktuellen ASCII-67-Version. Die Definitionen der Steuerzeichen (Spalte 1 oben) variierten zwischen den beiden unten definierten Versionen. In ASCII-63 waren die oberen 32 Positionen (Spalte-4) mit Ausnahme von drei nicht definiert: RUB (0x7F), ACK (0x7C) und ESC (0x7E). Es gibt inkonsistente Verweise auf ein ALT-MODE-Zeichen (0x7D) in ASCII-63. In der Version von 1967 wurde RUB zu DEL und blieb in derselben Position, aber ACK und ESC wurden in den Steuerzeichenbereich (Spalte 1) verschoben. In ASCII-67 ersetzte ^ das Aufwärtspfeilsymbol und _ den Linkspfeil

ASCII-63 und ASCII-67 sind die gebräuchlichen Varianten von ASCII, aber es scheint auch einige Übergangsversionen gegeben zu haben: Im Handbuch zu Teletype Model 33 gibt es Verweise auf eine ASCII-Version von 1965, die SS anstelle von SUB hatte (0x1A), \ für @ (0x40), ~ für \ (0x5C), ein ungerades Zeichen anstelle von | (0x7C) und | für ~ (0x7E). Eine Teletyp-Codekarte für M33- und M35-Maschinen zeigt eine ASCII-Version von 1966 an, obwohl die auf der Karte angezeigten druckbaren Zeichen in allen Versionen identisch waren.

Dies war früher bekannt, da es Probleme beim Austausch von Dateien zwischen verschiedenen Codierungen wie ASCII und EBCDIC gab, bei denen es noch Drucker gab, die in der Lage waren, Aufwärtspfeile als solche zu rendern, lange nachdem das Zeichen in ASCII nicht mehr vorhanden war.

Thomas Dickey
quelle
1
0x5e ist ein Aufwärtspfeil, bevor ^erklärt wird, warum dieses Zeichen als Pipe-Operator in der ursprünglichen Unix-Shell verwendet wurde (vermittelt die Idee, dass Daten von einem Befehl zu einem anderen fließen). Die Bourne-Shell wird weiterhin ^als alternativer Pipe-Operator behandelt (aus Gründen der Abwärtskompatibilität mit der Thomson-Shell).
Stéphane Chazelas
yes - uparrows waren zu nützlich, um sie mit ASCII loszulassen. Das erinnert mich auch an eine direktere Tastaturanbindung, aber ich habe kein Bild gefunden, das ich veranschaulichen könnte.
Thomas Dickey
1
0x9 (TAB) wird normalerweise als ^I, 0x89 als M-^I, 0xc9 als M-I, 0xe9 als dargestellt M-i. Wissen Sie jetzt, ob jemals ein Zeichen verwendet wurde, um Meta anstelle von Meta darzustellen M-?
Stéphane Chazelas
Nicht ohne weiteres: Ich habe super / meta / hyper nicht besonders beachtet, da sie bei ihrer Einführung nur für einige wenige Terminals galten, die die meisten noch nie gesehen haben.
Thomas Dickey