GNU/Linux >> Belajar Linux >  >> Linux

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

Tutup . Pertanyaan ini berbasis opini. Saat ini tidak menerima jawaban.

Ingin memperbaiki pertanyaan ini? Perbarui pertanyaan sehingga dapat dijawab dengan fakta dan kutipan dengan mengedit posting ini.

Ditutup 4 tahun yang lalu.


Perbaiki pertanyaan ini

Saya telah mendengar bahwa VT100 adalah standar de facto. Apakah ini berarti jika saya hanya dapat mendukung VT100 dan kemudian terminal saya dapat bekerja untuk aplikasi baris perintah yang ada tanpa masalah besar? Jika tidak, bagaimana memastikan terminal itu praktis? Apakah ada referensi yang dapat membantu untuk mencapai tujuan ini?

Jawaban yang Diterima:

Anda akan membuat Thomas Dickey kepanasan.

Abaikan samizdat yang telah beredar selama bertahun-tahun tentang terminal VT10x. Banyak yang salah. DEC VT100, VT101, dan VT102 menerapkan serangkaian fungsi yang sangat spesifik, yang dapat dipelajari dari membaca dokumen mereka.

Itu bukan orang-orang yang salah mengartikan istilah vt100 dan vt102 sebenarnya berarti, namun. Seringkali, yang mereka bicarakan adalah emulasi terminal yang melakukan lebih banyak lebih daripada apa yang dilakukan VT10x nyata, serta jauh lebih banyak kurang . DEC VT102 asli memiliki printer serial yang terpasang, dan urutan kontrol untuk mengaksesnya, misalnya. Selanjutnya tidak memiliki banyak urutan kontrol dari emulator terminal yang lebih baru dan terminal nyata yang dianggap salah oleh orang sebagai "vt102". Itu tidak memiliki konsep perubahan warna SGR, misalnya.

Anda memiliki dua pilihan dasar:

  • Menerapkan sesuatu yang kompatibel dengan tipe terminal yang ada yang didefinisikan dalam database termcap/terminfo. Jika Anda melakukan ini, Anda harus melakukannya dengan benar, dengan persis menyalin semua perilaku yang dijelaskan dari tipe terminal yang ada. (Emulator terminal nosh toolset melakukan ini, meniru linux di Linux jenis terminal. Itu harus menyalin linux pengkodean kunci fungsi dan kunci fungsi yang unik dan terbatas tipe terminal.)
  • Terapkan jenis terminal Anda sendiri, yang perilakunya dirancang oleh Anda, yang kemudian harus Anda sertakan dalam database termcap/terminfo. Emulator terminal Putty, sebenarnya, melakukan ini. Deskripsi terminfo yang benar adalah putty , putty-256color , atau putty-sco .

Untuk yang pertama, apa yang standar tidak relevan, karena Anda harus menyalin perilaku yang dijelaskan tidak peduli seberapa tidak standarnya itu. Untuk yang terakhir, jangan mencari standar de facto. Lihat yang sebenarnya standar, beberapa di antaranya telah ada sejak 1976.

  • ECMA-48 (pertama kali diterbitkan pada tahun 1976 dan kemudian diadopsi sebagai standar ISO/IEC, ISO/IEC 6429) menjelaskan:
    • Kode kontrol C0,
    • Kode kontrol C1 (yang sedikit diketahui tetapi menangani beberapa hal berguna seperti menyetel/menghapus tabstop dan indeks maju/mundur)
    • Alias ​​7-bit untuk semua kode kontrol C1 (misalnya, ESC [ adalah alias 7-bit untuk aktual karakter kontrol 8-bit U+009B),
    • urutan kontrol yang diperkenalkan oleh CSI (untuk itu ada sintaks umum dalam standar yang membuat banyak parser urutan kontrol yang ditulis samizdat salah),
    • dan banyak hal lainnya.
  • ISO/IEC 2022 menjelaskan peralihan di antara set karakter 7-bit. Jika Anda akan menerapkan kemampuan UTF-8 sejak awal, ISO/IEC 2022 sebaiknya diabaikan sepenuhnya, karena Markus Kuhn dan penemu mosh akan memberitahu Anda.
  • ISO/IEC 8613-6 (diterbitkan pada tahun 1989 dan direvisi pada tahun 1994) menjelaskan ekstensi ke ECMA-48 untuk urutan kontrol SGR warna, baik pemilihan "warna terindeks" dari palet dan RGB "warna langsung". (Keduanya warna langsung dan warna terindeks didefinisikan dalam ISO/IEC 8613-2. Anda mungkin tahu yang terakhir dengan nama samizdat "256 warna".)

    Catatan penting: Hampir semua implementasi menerapkan standar ini secara salah, karena mereka bekerja dari samizdat (atau hanya menyalin satu sama lain) daripada dari standar yang sebenarnya. Standar mengatakan di 13.1.8 untuk menggunakan titik dua (: , “3/10”) sebagai pemisah sub-parameter; hampir semua implementasi salah menggunakan titik koma (; ), memperkenalkan ambiguitas penguraian. Banyak perangkat lunak telah mengakomodasi kesalahan ini.

Terkait:Apa yang ditunjukkan oleh proses STAT ini?

Bacaan lebih lanjut

  • Fungsi Kontrol untuk Kumpulan Karakter Berkode . ECMA-48. edisi ke-5. 1991. ECMA Internasional.
  • Teknologi informasi — Arsitektur Dokumen Terbuka (ODA) dan format pertukaran:Struktur dokumen . T.412. Serikat Telekomunikasi Internasional.
  • Teknologi informasi — Arsitektur Dokumen Terbuka (ODA) dan format pertukaran:Arsitektur konten karakter . T.416. Serikat Telekomunikasi Internasional.
  • Teknologi informasi— Arsitektur Dokumen Terbuka (ODA) dan Format Pertukaran:Arsitektur konten karakter . ISO/IEC 8613-6:1994. Organisasi Internasional untuk Standardisasi.
  • Markus Kuhn (2009). “Apa masalah yang terkait dengan emulator terminal UTF-8?”. FAQ UTF-8 dan Unicode untuk Unix/Linux .
  • Keith Winstein, Anders Kaseorg, dkk. (2012). "Penguncian ISO 2022 lolos". info teknis mosh .
  • Manual Referensi Pemrogram VT420 . EK-VT420-RM-002. Februari 1992. Digital.
  • Informasi Pemrogram Terminal Video VT520/VT525 . EK-VT520-RM. Juli 1994. Digital.
  • Thomas E. Dickey (1997). “Apa itu VT220?”. Pertanyaan Umum xterm . pulau tak terlihat.

Linux
  1. Apa trik terminal Linux favorit Anda?

  2. Apa emulator terminal Linux favorit Anda?

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

  1. Apakah Terminal Gnome Merupakan Jenis Shell Non-login?

  2. Emulator Terminal Apa yang Mendukung Mode Kontrol Tmux?

  3. Untuk apa time_t pada akhirnya menjadi typedef?

  1. Apa emulator terminal favorit Anda?

  2. Apa trik terminal Linux favorit Anda?

  3. Apa perbedaan antara ls dan l?