GNU/Linux >> Belajar Linux >  >> Linux

Protokol/standar apa yang digunakan oleh Terminal?

Saya bertanya-tanya bagaimana "GUI" aplikasi baris perintah dikomunikasikan melalui jaringan. Sebagian besar waktu, ini cukup sederhana (teks biasa / input) tetapi terkadang lebih kompleks (aptitude).

Apakah itu didefinisikan oleh semacam standar sehingga siapa pun dapat menulis terminal mereka sendiri dan bahwa semua implementasi terminal berperilaku dengan cara yang sama (warna, pemosisian, dll.)?

Jawaban yang Diterima:

Program konsol biasanya menggunakan kutukan atau salah satu penerusnya¹ untuk membangun jenis antarmuka pengguna teks yang Anda bicarakan.

Pustaka ini menggunakan salah satu dari dua database, yang disebut termcap dan terminfo .² Basis data ini berisi peta yang memberi tahu perpustakaan kode apa yang harus dikirim untuk mendapatkan tindakan yang diinginkan dengan sejumlah besar jenis terminal yang beragam. Sebagian besar jenis terminal yang akan Anda temukan didefinisikan dalam basis data ini tidak bertahan pada zaman terminal nyata, dan sekarang hanya memiliki kepentingan historis.

Terminal ANSI

Emulator terminal Unix modern³ menggunakan protokol ANSI X3.64 atau salah satu varian selanjutnya:

  • ANSI X3.64 :Standar untuk mengendalikan "terminal kaca" — sebagai lawan dari 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 kursornya ke sudut kiri atas layar, ia akan mengirimkan karakter ESC [ 1 ; 1 H . Dua karakter pertama memberi tahu terminal untuk mengharapkan urutan kontrol, angka 1 adalah baris dan kolom, dan H adalah perintah yang berarti “gerakkan kursor”.⁴

    Trivia:banyak PC BBS menggunakan kode ANSI juga. (Masih, sebenarnya.)

  • DEC VT100 :Terminal kaca kompatibel ANSI pertama yang sangat populer adalah VT100 dari Digital Equipment Corporation. Dengan membuktikan de jure ANSI standar di pasar, itu membentuk de facto standar yang masih penting sampai sekarang.

    Terkadang Anda melihat ini disebut protokol VT102, yang merupakan versi VT100 yang lebih hemat biaya — dan karena itu lebih populer — ditambah semua opsi perluasan yang tersedia di dalamnya.

    Protokol terminal DEC adalah seri yang kompatibel ke belakang, terbentang dari model pertama yang kompatibel dengan ANSI yang diperkenalkan pada tahun 1978 (VT100) hingga model seri VT500 yang diproduksi oleh Boundless Technologies setelah mereka membeli bisnis terminal dari DEC pada tahun 1995. (Boundless adalah sekarang gulung tikar, tetapi terminal mereka masih muncul di pasar bekas dari waktu ke waktu.)

  • xterm :Semacam campuran ANSI dan VT-standar apa pun. Setiap kali Anda menggunakan emulator terminal GUI seperti xterm atau salah satu turunannya, Anda biasanya juga menggunakan xterm protokol terminal, biasanya xterm-color yang lebih modern atau xterm-color256 varian.

  • Linux :Konsol Linux juga menggunakan varian tambahan dari protokol terminal ANSI, dengan semangat yang sama seperti xterm protokol. Sebagian besar ekstensinya berkaitan dengan perbedaan antara PC dan terminal kaca. Misalnya, keyboard IBM memiliki beberapa tombol yang tidak ada pada DEC VT-apa pun. (Dan sebaliknya.)

    Beberapa sistem Unix juga memiliki protokol terminal konsol sendiri. Ada scoansi Varian ANSI X3.64 untuk SCO Unix, misalnya.

Program emulator terminal tipikal adalah semacam anjing kampung, dan tidak meniru model terminal tunggal dengan tepat. Ini mungkin mendukung 96% dari semua urutan pelepasan DEC VT melalui VT320, namun juga mendukung ekstensi seperti warna ANSI (fitur VT525) dan jumlah baris dan kolom yang berubah-ubah. 4% kode yang tidak dipahami mungkin tidak akan terlewatkan jika program Anda tidak memerlukan fitur tersebut, meskipun Anda telah memberi tahu curses (atau apa pun) yang Anda inginkan agar program menggunakannya untuk menggunakan protokol VT320. Program semacam itu mungkin mengiklankan dirinya sebagai kompatibel dengan VT320, namun sebenarnya tidak.⁵

Terkait:Memperbarui Entri TNS di beberapa terminal?

Terminal Non-ANSI

Ada beberapa standar penting lainnya yang terkadang masih Anda temui:

  • Wyse :Salah satu produsen terminal kaca independen paling awal, Wyse mulai membuat terminal pada awal 1980-an sebelum komputasi workstation mulai menggantikan komputer mini. Meskipun terminal Wyse mampu meniru VT100 dan protokol terminal populer lainnya, mereka juga memiliki kode asli sendiri.

  • IBM 3270 :Meskipun ini bukan tipe terminal "Unix", kebutuhan untuk menghubungkan sistem Unix ke mainframe IBM mengarah pada pembuatan program emulator terminal seri IBM 3270, yang masih dapat Anda temukan saat digunakan. Emulator untuk terminal seri IBM 5250 yang lebih baru juga cukup umum, paling sering digunakan akhir-akhir ini untuk menghubungkan ke komputer mini AS/400 dan System i.

  • Tektronix 4014 :Sebelum PC dan workstation sebagian besar menggantikan terminal kaca dan dengan demikian menjadikan grafik bitmap sebagai fitur standar, ada terminal grafik mahal yang menggambar grafik di layar sebagai tanggapan terhadap perintah teks yang serupa dengan urutan escape yang dijelaskan di atas. Mungkin yang paling populer adalah seri Tektronix 4010.

    Mereka cukup menyenangkan untuk digunakan. Anda dapat menulis program yang menggambar grafik, tetapi alih-alih menjalankannya untuk menggambar di terminal lokal, Anda dapat mengarahkan outputnya ke file:

    $ ./my4014program > my-neat-graphic
    

    Anda kemudian dapat mengirim file itu ke orang lain, dan mereka dapat cat di terminal Tek mereka untuk melihat grafik tanpa program Anda. Bagian dari daya tariknya adalah betapa lambatnya terminal ini dalam menggambar, sehingga Anda dapat melihat grafik yang terbentuk selama beberapa detik.

Bekerja Dengan Emulasi Terminal Unix Hari Ini

Anda dapat mengetahui standar terminal mana yang Anda tanyakan kepada perpustakaan seperti curses untuk digunakan dengan melihat TERM variabel lingkungan:

$ echo $TERM
xterm-color

Saat Anda ssh ke sistem lain, TERM variabel dibawa bersama sehingga kotak Unix jarak 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 yang ada di mana-mana menangani banyak hal lain, TERM yang salah variabel biasanya tidak membawa bencana. Hal-hal yang cenderung rusak adalah tombol tambahan seperti Beranda dan Halaman Atas, kombinasi tombol Alt-apa pun, dan fitur tampilan tipografi seperti warna, huruf tebal, dll.

Catatan Kaki:

  1. Paling umum, ncurses.

    Ada juga pesaing langsung untuk curses API, seperti S-Lang.

  2. AT&T mengumumkan terminfo sebagai pengganti termcap BSD database, dan sebagian besar berhasil menggantikannya, tetapi masih ada program di luar sana yang masih menggunakan termcap lama basis data. Ini adalah salah satu dari banyak perbedaan BSD vs. AT&T yang masih dapat Anda temukan di sistem modern.

    Kotak macOS saya tidak memiliki /etc/termcap , tetapi memiliki /usr/share/terminfo , sedangkan instalasi standar FreeBSD adalah kebalikannya, meskipun kedua OS ini seringkali sangat mirip pada tingkat baris perintah.

  3. minicom , xterm , mintty , Terminal GNOME, Terminal.app, dll.

  4. Program Unix yang ditulis dengan benar tidak memancarkan urutan pelarian ini secara langsung. Sebagai gantinya, mereka menggunakan salah satu perpustakaan yang disebutkan di atas, menyuruhnya untuk "memindahkan kursor ke posisi (1,1)" atau apa pun, dan perpustakaan memancarkan kode kontrol terminal yang diperlukan berdasarkan TERM pengaturan variabel lingkungan. Hal ini memungkinkan program untuk bekerja dengan baik apa pun jenis terminal yang Anda gunakan untuk menjalankannya.

  5. 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 sixel dan mode teks double-width/double-height.

    Pengelola xterm menulis sebuah program bernama vttest untuk menguji emulator terminal VT seperti xterm . Anda dapat menjalankannya terhadap emulator terminal lain untuk mengetahui fitur mana yang tidak mereka dukung.

Terkait:Gumpalan rekursif?
Linux
  1. Apa itu Protokol Transfer File (FTP)

  2. Port apa yang digunakan oleh aplikasi

  3. Apa itu pseudo terminal (pty/tty)?

  1. Apa trik terminal Linux favorit Anda?

  2. Apa emulator terminal Linux favorit Anda?

  3. Apa arti mdev dalam ping(8)?

  1. Penjelasan 15 Port Jaringan yang Umum Digunakan

  2. Bagaimana Menguji Shell Apa yang Saya Gunakan Di Terminal?

  3. Jenis Terminal Apa Yang Harus Didukung Jika Menerapkan Emulator Terminal??