Saya telah menemukan urutan bash seperti \033[999D
dan \033[2K\r
yang digunakan untuk melakukan manipulasi pada cetakan di terminal. Tapi apa arti urutan ini? Di mana saya dapat menemukan daftar / ringkasan di web untuk membantu saya mengetahui arti dari rangkaian ini?
19
Jawaban:
Lihat tautan ini http://www.termsys.demon.co.uk/vtansi.htm . Seperti kata Anthon,
\033
adalah kode oktal gaya C untuk karakter pelarian. The[999D
memindahkan kursor kembali 999 kolom, mungkin cara kekerasan untuk mendapatkan ke awal baris.[2K
menghapus garis saat ini.\r
adalah carriage return yang akan memindahkan kursor kembali ke awal baris saat ini dan merupakan urutan pelepasan gaya-C daripada urutan kontrol terminal.Memperbarui
Seperti yang ditunjukkan oleh orang lain, urutan kontrol ini tidak ada hubungannya
bash
dengan perangkat terminal / emulator tempat teks muncul. Dahulu kala, urutan-urutan ini ditafsirkan oleh perangkat keras yang sama sekali berbeda. Awalnya, masing-masing akan menanggapi set kode yang sama sekali berbeda. Untuk menangani hal initermcap
danterminfo
pustaka tempat digunakan untuk menulis kode yang kompatibel dengan beberapa terminal. Thetput
perintah adalah antarmuka keterminfo
perpustakaan (termcap
dukungan juga dapat disusun dalam) dan merupakan cara yang lebih kuat untuk membuat urutan kompatibel.Yang mengatakan, ada juga standar ANSI X3.64 atau ECMA-48 . Setiap implementasi terminal modern akan menggunakan ini.
terminfo
dantermcap
masih relevan karena implementasinya mungkin tidak lengkap atau termasuk ekstensi non-standar, namun untuk sebagian besar tujuan, aman untuk mengasumsikan bahwa urutan umum ANSI akan berfungsi.The
xterm
FAQ menyediakan beberapa informasi menarik tentang perbedaan antara emulator terminal modern (banyak hanya mencoba untuk meniruxterm
itu sendiri) dan bagaimanaxterm
urutan berhubungan dengan VT100 terminal disebutkan di link di atas. Ini juga menyediakan daftarxterm
urutan kontrol yang pasti .Yang juga biasa digunakan tentu saja adalah konsol Linux, daftar urutan kontrol pasti untuk itu dapat ditemukan di
man console_codes
, bersama dengan perbandinganxterm
.sumber
tput
perintah sebagai gantinya, untuk memiliki portabilitas lebih banyak, iirc (tetapi dengan mengorbankan cakupan yang lebih rendah dari spesifikasi terminal Anda). VT100 (yang dibicarakan laman) didukung oleh banyak (tapi tidak semuanya didukung, saya percaya ...). Tetapi variabel TERM Anda dapat diatur ke beberapa terminal lain, dan ini dapat mempengaruhi efek dari beberapa perintahtput
adalah cara yang lebih kuat. Tapi itu adalah kompatibilitas ANSI daripada terminal VT100 spesifik yang sekarang cukup di mana-mana, meskipun saya membayangkan dimungkinkan untuk mengaturxterm
ke mode yang tidak menerimanya. Saya akan memperbarui dengan beberapa info lebih lanjut tentang ini saya pikir.TERM=xterm
tetapi tidak mengimplementasikan semuanyaxterm
.Ini
\033
adalah karakter pelarian, dan urutan itu tidak spesifik bash tetapi diinterpretasikan oleh terminal (perangkat lunak atau perangkat keras (melalui jaringan atau serial line)) di mana program (bash) berjalan. Ada banyak urutan seperti itu .Apa yang dilakukan masing-masing, tergantung pada terminal yang bergantung padanya, dan mungkin juga tergantung pada urutan sebelumnya yang mengubah keadaan terminal.
Ini sering digunakan untuk mengatur warna di bash prompt , tetapi saya tidak menemukan contoh khusus Anda pada halaman itu.
sumber
'\ 033 [999D' itu lucu. Beberapa terminal menerapkan lebih sedikit dari urutan pelarian, jadi ini mungkin diperlukan jika tidak ada dari '\ 033 [1G', '\ 033 [1; 1H', '\ 033 [1; 1f', atau '\ r' berperilaku seperti mereka seharusnya, tetapi siapa yang menggunakan tampilan teks seribu kolom? Urutan ini memiliki halaman manual di Linux: console_codes (4) . bjh21 memiliki daftar terperinci dari semua kode . Bergantung pada program mana yang mem-parsing '\ 033', substitusi yang lebih jelas '\ e' mungkin tersedia.
Benar-benar tidak dimaksudkan bahwa ini digunakan secara langsung - cara yang benar untuk mengeluarkan perintah kontrol terminal adalah dengan lapisan abstraksi seperti ncurses - tetapi mereka berfungsi sama baiknya dari string literal.
sumber
\033[999D
akan kembali ke baris sebelumnya. Mungkin hanya hasil dari pengkodean yang cerdik;) Anda jugabash
dapat menginterpretasikan kode pelarian secara langsung, misalnya$'\033[999D'
Anda dapat mencari "033 term escape list" atau " 033 tput " dan lihat http://wiki.bash-hackers.org/scripting/terminalcodes untuk info lebih lanjut sebelum seseorang menjawab;]
sumber