Mengapa karakter sirkumfleks / tanda sisipan digunakan sebagai simbol untuk Ctrl?

18

Saya mulai menggunakan konsol Linux sejak lama, tetapi saya tidak pernah bertanya pada diri sendiri tentang karakter sirkitfleks alias karet ( ^). Saya ingin bertanya mengapa kata itu digunakan sebagai pengganti kata Ctrl.

Saya memikirkannya beberapa hari yang lalu ketika saya menggunakan nano dan saya juga mencari untuk melihat apakah ada beberapa jawaban di internet tetapi yang saya temukan hanyalah pertanyaan tentang "apa itu" dan "apa yang diwakilinya".

Apakah ada alasan historis? Atau apakah itu berasal dari konvensi aneh?

Giacomo Cerquone
sumber
2
Bahkan yang asli vi(setidaknya yang ada di SunOS 3.5) menggunakan tanda sisipan / sirkumfleks di depan huruf untuk merepresentasikan ctrl-C, ctrl-V, dll. Melakukan sttydan melakukan itu juga. Di sisi lain, ^berfungsi sebagai sinonim untuk |skrip shell selama era itu, jadi Anda harus selalu mencoret garis miring tanda tangan dalam sttydoa. Pertanyaan bagus.
Bruce Ediger
1
Jika saya harus menebak, saya akan mengatakan bahwa itu mungkin ada hubungannya dengan fakta bahwa Shift, Control, dan Meta (serta sejenisnya yang kurang dikenal seperti Super dan Hyper) adalah semua kunci pengubah, di mana Kontrol mungkin yang paling umum digunakan. Karena sebagian besar karakter 'versi Bergeser dapat dengan mudah diketik, (misalnya 3/ #), ^mungkin merupakan singkatan visual untuk' shift 'yang berbeda, bisa dikatakan. Fakta bahwa untuk sebagian besar tombol / karakter yang dapat diketik, Ctrl hanya mematikan 64 bit karakter yang mungkin juga terkait - ^menjadi singkatan NOT (0x40).
DopeGhoti

Jawaban:

11

Circflex ( ^) disamakan dengan karakter panah atas pada teleprinters. Pada saat SunOS dan sebagainya muncul, bagian ini sudah lebih dari 10 tahun di masa lalu. Karakter yang sama (penggantian) digunakan dalam ekspresi matematika, misalnya, ^untuk kekuatan (di mana beberapa orang lain mungkin menggunakan **). Itu juga digunakan dalam Pascal untuk menunjukkan pointer.

Digunakan untuk menunjukkan karakter kontrol, ini tanggal (setidaknya) sebelum 1980. Anda dapat menemukannya digunakan dalam dokumentasi DEC misalnya (itu pasti digunakan pada pertengahan 1970-an ketika saya menggunakan teco. Manual Utilities from 1973 (halaman 927) menunjukkan controlCmisalnya.

Mencari sumber yang cocok, saya menemukan Kode Komunikasi Teletypewriter oleh Gil Smith yang mengatakan cukup untuk menempatkan ini pada akhir 1960-an (menunjukkan bahwa asal adalah pra-Unix, juga):

ASCII-63 sebagian besar identik dengan versi ASCII-67 saat ini. Definisi karakter kontrol (col-1 di atas) bervariasi antara dua versi, sebagaimana didefinisikan di bawah ini. Juga, dalam ASCII-63, 32 posisi atas (col-4) tidak terdefinisi, kecuali tiga: RUB (0x7F), ACK (0x7C), dan ESC (0x7E). Ada referensi yang tidak konsisten untuk char ALT-MODE (0x7D) di ASCII-63. Pada versi 1967, RUB menjadi DEL dan tetap di posisi yang sama, tetapi ACK dan ESC pindah ke area karakter kontrol (col-1). Di ASCII-67, ^ mengganti simbol panah atas, dan _ mengganti panah kiri

ASCII-63 dan ASCII-67 adalah varian umum ASCII, tetapi tampaknya ada beberapa versi transisi juga: dalam manual Teletype Model 33, ada referensi ke versi ASCII 1965, yang memiliki SS menggantikan SUB (0x1A), \ untuk @ (0x40), ~ untuk \ (0x5C), karakter aneh di tempat | (0x7C), dan | untuk ~ (0x7E). Kartu kode Teletype untuk mesin M33 dan M35 menunjukkan versi ASCII 1966, meskipun karakter yang dapat dicetak yang ditunjukkan pada kartu itu identik di semua versi.

Ini dulunya terkenal, karena masalah pertukaran file antara pengkodean yang berbeda seperti ASCII dan EBCDIC di mana masih ada printer yang mampu merender panah-up sejauh setelah karakter tidak lagi ada di ASCII.

Thomas Dickey
sumber
1
0x5e menjadi panah atas sebelum ^juga menjelaskan mengapa karakter itu digunakan sebagai operator pipa di shell Unix yang asli (menyampaikan gagasan tentang data yang mengalir dari satu perintah ke perintah lain). Shell Bourne masih memperlakukan ^sebagai operator pipa alternatif (saya kira untuk kompatibilitas dengan shell Thomson).
Stéphane Chazelas
ya - uparrows terlalu berguna untuk dilepaskan, dengan ASCII. Ini juga mengingatkan saya pada beberapa tie-in keyboard yang lebih langsung, tetapi saya tidak menemukan gambar untuk diilustrasikan.
Thomas Dickey
1
0x9 (TAB) biasanya direpresentasikan sebagai ^I, 0x89 as M-^I, 0xc9 as M-I, 0xe9 as M-i. Apakah Anda sekarang jika beberapa karakter pernah digunakan untuk mewakili Meta di tempat M-?
Stéphane Chazelas
Bukan begitu saja: Saya tidak terlalu memperhatikan super / meta / hyper karena ketika mereka diperkenalkan, mereka hanya diterapkan pada beberapa terminal yang paling tidak pernah dilihat.
Thomas Dickey