Saya mencoba membuat PS1 dikonfigurasi sebagai berikut.
Hijau = "\ [\ e [32; 1m \]" Merah = "\ e [0; 31m" Ungu = "\ e [0; 35m" STARTCOLOR = "\ [\ e [40m \]" ENDCOLOR = "\ [\ e [0m \]" ekspor PS1 = "$ STARTCOLOR $ Hijau \ u @ $ Ungu \ h $ Merah \ w $ Hijau> $ ENDCOLOR"
Dan saya punya beberapa pertanyaan.
- Apa perbedaan antara "[\ e [32; 1m]" dan \ e [32; 1m "? Apakah keduanya sama?
- Setelah menjalankan perintah 'ekspor PS1', berfungsi dengan baik, tetapi ketika saya memberi input sekitar 20 karakter, karakter-karakter tersebut ditimpa saat saya lampirkan. Ada apa dengan ini?
- Apa arti dari STARTCOLOR (\ e [40m) / ENDCOLOR (\ e [0m)?
http://a.imageshack.us/img8/606/resultqm.jpg
TAMBAH
Setelah beberapa tes, saya mendapat perubahan berikut bisa menyelesaikan masalah. Artinya, format "\ e" harus diganti dengan format "\ [\ e".
Merah = "\\ e [1; 31m" - tidak berfungsi Merah = "\ [\ e [1; 31m \]" - berfungsi
\$
untuk secara otomatis beralih antara indikasi root dan non-root.Dari manual bash:
\[
dan\]
tidak dilewatkan ke terminal. Mereka mengatakan kepada bash bahwa karakter di antara mereka tidak akan dicetak. Tanpa mereka, bash tidak dapat mengetahui bahwa urutan yang mengikuti karakter pelarian (e, g.[32;1m
) Tidak memakan ruang di layar, yang menjelaskan mengapa ia tidak menghitung panjang prompt dengan benar ketika Anda meninggalkannya.Perhatikan bahwa Anda belum sangat konsisten dalam pertanyaan Anda (atau mungkin itu hanya kesalahan dengan Penurunan harga); Anda harus memiliki urutan braket backslash-literal
$PS1
, bukan hanya braket (yang akan ditampilkan secara harfiah).Urutan escape yang dimulai dengan
\e
ditafsirkan oleh terminal emulator. Mereka didokumentasikan dalam dokumen sekuens kontrol Xterm (ctlseqs) (emulator terminal lain cenderung sebagian besar kompatibel). Misalnya,\e[32;1m
beralih ke latar depan tebal dan hijau;\e[40m
mengganti warna latar menjadi hitam;\e[0m
mengembalikan atribut default.sumber
Kebanyakan emulator terminal modern dapat menggunakan kode pelarian ANSI untuk mengontrol berbagai aspek tampilan.
Sebagian besar kode ANSI dimulai dengan kode 2 karakter ESC- [Itu adalah karakter pelarian (ASCII desimal 27) diikuti oleh karakter braket kotak terbuka. Urutan ini juga dikenal sebagai CSI atau Kontrol Sequence Initiator.
Karena karakter escape bukan karakter yang dapat Anda ketik secara langsung (tombol Esc memiliki yang lain, seringkali aplikasi spesifik, penggunaan) bash menggunakan '\ e' untuk merujuknya.
Mengubah warna teks menggunakan perintah ANSI Set Graphics Mode:
di mana
<value>
bisa menjadi daftar nilai yang dipisahkan oleh semi-titik dua (;
). Biasanya hanya satu nilai yang digunakan, meskipun atribut tebal berguna dalam hubungannya dengan atribut warna.Melihat nilai-nilai yang tercantum dalam jawaban Alexander Pogrebnyak, 0 atau 1 sebelum semi-kolon memilih dengan huruf tebal atau tidak:
Ada daftar kode yang bermanfaat di sini http://ascii-table.com/ansi-escape-afterences.php
sumber