Program konsol biasanya menggunakan kutukan atau salah satu penggantinya¹ untuk membangun jenis antarmuka pengguna teks yang Anda bicarakan.
Pustaka - pustaka ini menggunakan salah satu dari dua database, yang disebut termcap
dan terminfo
.² Pangkalan data ini berisi peta yang memberi tahu pustaka kode apa yang harus dikirim untuk mendapatkan tindakan yang diinginkan dengan sejumlah besar jenis terminal yang beragam. Sebagian besar jenis terminal yang Anda temukan didefinisikan dalam basis data ini tidak bertahan masa terminal nyata , dan sekarang hanya kepentingan sejarah.
Terminal ANSI
Emulator terminal Unix modern³ menggunakan protokol ANSI X3.64 atau salah satu varian selanjutnya:
ANSI X3.64 : Suatu standar untuk mengendalikan "terminal kaca" - berbeda dengan teletipe - didasarkan pada urutan karakter khusus yang ditafsirkan oleh terminal jarak jauh. Misalnya, jika kotak Unix ingin memberi tahu terminal yang kompatibel dengan ANSI X3.64 untuk memindahkan kursor ke sudut kiri atas layar, ia mengirim karakterESC
[
1
;
1
H
. Dua karakter pertama memberitahu terminal untuk mengharapkan urutan kontrol, 1 adalah baris dan kolom, danH
merupakan perintah yang berarti "pindahkan kursor" .⁴
Trivia: banyak PC BBS yang menggunakan kode ANSI juga. ( Masih , sebenarnya.)
DEC VT100 : Terminal kaca kompatibel ANSI pertama yang sangat populer adalah VT100 Digital Equipment Corporation. Dengan membuktikan standar de jure ANSI di pasar, ia menetapkan standar de facto yang masih penting hingga saat ini.
Kadang-kadang Anda melihat ini disebut protokol VT102, yang kemudian menjadi versi VT100 yang dikurangi biaya - dan karenanya lebih populer - plus semua opsi ekspansi yang tersedia bawaan.
Protokol terminal DEC adalah seri yang kompatibel dengan mundur, memanjang dari model yang kompatibel dengan ANSI pertama yang diperkenalkan pada 1978 (VT100) hingga melalui model seri VT500 yang diproduksi oleh Boundless Technologies setelah mereka membeli bisnis terminal dari DEC pada 1995. (Boundless adalah sekarang keluar dari bisnis, tetapi terminal mereka masih muncul di pasar bekas dari waktu ke waktu.)
xterm : Semacam amalgam dari ANSI dan VT-standar apa pun. Setiap kali Anda menggunakan emulator terminal GUI sepertixterm
atau salah satu turunannya, Anda biasanya juga menggunakanxterm
protokol terminal, biasanya yang lebih modernxterm-color
atauxterm-color256
variannya.
Linux : Konsol Linux juga menggunakan varian lanjutan dari protokol terminal ANSI, dengan semangat yang sama denganxterm
protokol. Sebagian besar ekstensi berkaitan dengan perbedaan antara PC dan terminal kaca. Sebagai contoh, keyboard IBM memiliki beberapa tombol bukan pada DEC VT-terserah. (Dan sebaliknya.)
Beberapa sistem Unix memiliki protokol terminal konsol mereka sendiri juga. Ada scoansi
varian ANSI X3.64 untuk SCO Unixes, misalnya.
Program emulator terminal tipikal adalah semacam anjing kampung, dan tidak persis meniru model terminal tunggal apa pun. Ini mungkin mendukung 96% dari semua sekuens pelarian DEC VT hingga VT320, namun juga mendukung ekstensi seperti warna ANSI (fitur VT525) dan jumlah baris dan kolom yang berubah-ubah. 4% kode yang tidak dimengerti mungkin tidak akan terlewatkan jika program Anda tidak memerlukan fitur-fitur itu, meskipun Anda telah mengatakan curses
(atau apa pun) bahwa Anda ingin program menggunakannya untuk menggunakan protokol VT320. Program semacam itu mungkin mengiklankan dirinya sebagai kompatibel dengan VT320, maka, meskipun, sebenarnya tidak .⁵
Terminal Non-ANSI
Ada beberapa standar penting lain yang terkadang masih Anda temui:
Wyse : Salah satu produsen independen pertama terminal kaca, Wyse mulai membuat terminal pada awal 1980-an sebelum komputasi workstation mulai menggantikan minicomputer. Meskipun terminal Wyse mampu meniru VT100 dan protokol terminal populer lainnya, mereka juga memiliki kode asli mereka sendiri.
IBM 3270 : Meskipun ini bukan semata-mata jenis terminal "Unix", kebutuhan untuk menghubungkan sistem Unix ke mainframe IBM mengarah pada pembuatan program emulator terminal seri IBM 3270, yang masih dapat Anda temukan dalam penggunaannya. Emulator untukterminal seri IBM 5250 kemudianjuga cukup umum, paling sering digunakan hari ini untuk menghubungkan ke AS / 400 dan minicomputer System i .
Tektronix 4014 : Sebelum PC dan workstation memindahkan terminal kaca dan menjadikan grafik yang dipetakan sebagai fitur standar, ada terminal grafis mahal yang menggambar grafik di layar sebagai respons terhadap perintah teks yang mirip dengan urutan pelarian yang dijelaskan di atas. Mungkin yang paling populer dari ini adalah seri Tektronix 4010.
Mereka cukup menyenangkan untuk digunakan. Anda bisa menulis program yang menggambar grafik, tetapi alih-alih menjalankannya untuk menggambar di terminal lokal Anda, Anda bisa mengarahkan hasilnya ke file:
$ ./my4014program > my-neat-graphic
Anda kemudian dapat mengirim file itu ke orang lain, dan mereka dapat cat
melakukannya di terminal Tek mereka untuk melihat grafik tanpa memiliki program Anda. Bagian dari pesona adalah betapa lambatnya terminal-terminal ini dalam menggambar, sehingga Anda dapat menyaksikan grafik menumpuk selama beberapa detik.
Bekerja Dengan Emulasi Terminal Unix Hari Ini
Anda dapat mengetahui standar terminal mana yang ingin Anda curses
gunakan di perpustakaan dengan melihat TERM
variabel lingkungan:
$ echo $TERM
xterm-color
Ketika Anda ssh
ke sistem lain, TERM
variabel dijalankan sehingga kotak Unix jauh tahu bagaimana berkomunikasi dengan terminal lokal Anda.
Karena begitu banyak dari protokol ini adalah varian ANSI X3.64, dan karena standar pengkodean karakter ASCII dan UTF-8 di mana-mana menangani begitu banyak hal lain, TERM
variabel yang salah biasanya tidak bersifat katastropik. Hal-hal yang cenderung dipecahkan adalah tombol-tombol yang diperluas seperti Home dan Page Up, Alt-apa pun kombinasi tombol, dan fitur tampilan tipografis seperti warna, huruf tebal, dll.
Catatan kaki:
Paling umum, ncurses .
Ada juga pesaing langsung ke curses
API, seperti S-Lang .
AT&T diumumkan terminfo
sebagai pengganti termcap
database BSD , dan sebagian besar berhasil menggantikannya, tetapi masih ada program di luar sana yang masih menggunakan termcap
database lama . Ini adalah salah satu dari banyak perbedaan BSD vs AT&T yang masih dapat Anda temukan pada sistem modern.
Kotak macOS saya tidak punya /etc/termcap
, tetapi memang ada /usr/share/terminfo
, sedangkan instalasi standar FreeBSD adalah sebaliknya, meskipun kedua OS ini sering sangat mirip di tingkat baris perintah.
minicom
, xterm
, mintty
, GNOME Terminal , Terminal.app , dll
Program Unix yang ditulis dengan benar tidak memancarkan urutan pelarian ini secara langsung. Sebagai gantinya, mereka menggunakan salah satu perpustakaan yang disebutkan di atas, mengatakannya untuk "memindahkan kursor ke posisi (1,1)" atau apa pun, dan perpustakaan mengeluarkan kode kontrol terminal yang diperlukan berdasarkan pada TERM
pengaturan variabel lingkungan Anda . Ini memungkinkan program untuk bekerja dengan baik tidak peduli apa pun jenis terminal yang Anda jalankan.
Terminal teks lama memiliki banyak fitur aneh yang tidak banyak digunakan oleh program, sehingga banyak program emulator terminal populer tidak menerapkan fitur ini. Kelalaian umum adalah dukungan untuk grafik enamel dan mode teks lebar ganda / tinggi ganda.
Pemelihara xterm
menulis sebuah program yang disebut vttest
untuk menguji emulator terminal VT seperti xterm
. Anda dapat menjalankannya terhadap emulator terminal lain untuk mengetahui fitur mana yang tidak didukungnya.