Menurut posting StackOverflow ini , dimungkinkan memiliki prompt berwarna di KornShell. Saya belum bisa menemukan cara untuk melakukan ini. Saya dapat menggunakan warna:
echo -e "\033[34mLinux\033[00m"
memberikan output "Linux" biru, seperti halnya:
printf "\033[34mLinux\033[00m"
Namun, ketika saya memasukkan kode pelarian ke dalam PS1
variabel prompt saya , mereka tidak lolos. Apa yang harus saya lakukan untuk mendapatkan prompt berwarna? Selain menjadi pengisap untuk eyecandy, saya menemukan bahwa prompt berwarna berguna saat mengurai output secara visual.
Anda perlu memasukkan karakter escape literal ke dalam
PS1
variabel. Ksh88 dan klon seperti pdksh dan mksh (versi yang lebih lama) tidak memiliki sintaks literal untuk karakter kontrol kecuali melaluiprint
built-in. Mksh mengerti\e
untuk melarikan diri, tetapi pdksh membutuhkan kode oktal\033
.ATT ksh93 memperkenalkan sintaks literal backlash-escaped
$'…'
(juga tersedia di mksh sejak R39b). Anda dapat menggunakan lolos backslash untuk menempatkan karakter kontrol dalam literal ini.sumber
mksh
juga mendukung$'…'
- diakui karena Dave Korn (Korn di Korn Shell) bersikeras saya menambahkannya.Saya menggunakan ini
mksh
untuk penggunashell
:& sedikit berbeda
shell
untukroot
:Karena karakter khusus tidak menyalin, berikut adalah pasta pastebin untuk pengguna normal dan root.
sumber
Beberapa hal sedang terjadi dalam jawaban orang, masing-masing melibatkan sintaks yang berbeda.
Urutan pelarian untuk program terminal Anda yang diberikan dalam dokumentasi.
Cara menyandikan urutan pelarian terminal dalam variabel PS1, misalnya \ e atau literal escape. Ini tergantung pada shell.
Bagaimana cara menambahkan informasi yang berubah ke prompt, misalnya nama host, direktori saat ini, dll. Ini juga tergantung pada shell. Anda mungkin dapat menggunakan urutan garis miring terbalik khusus seperti \ w untuk direktori kerja, atau Anda mungkin harus menyebutkan variabel lingkungan atau menanamkan baris perintah ke dalam string.
Bagaimana cara memberi tahu shell karakter yang dicetak dan karakter mana yang tidak. Shell tidak tahu di mana urutan pelarian terminal Anda mulai dan berakhir. Jika shell memiliki editor baris perintah atau yang serupa, shell perlu tahu karakter mana yang dicetak sehingga tahu di mana kursor berada. Tanpa detail ini, prompt Anda mungkin terlihat benar tetapi mengedit dapat berperilaku aneh.
Di bash, Anda menaruh \ [sebelum setiap urutan escape dan \] setelah.
Di ksh, Anda memilih satu karakter ASCII yang tidak tercetak yang tidak dapat muncul di string lain. Di awal string, Anda menulis karakter yang diikuti oleh carriage return ASCII. Kemudian Anda menulis karakter yang sama sebelum dan sesudah setiap urutan pelarian. z3ntu memilih \ a sebagai karakter marker.
sumber
Berkat jawaban sebelumnya dan sumber lain, saya dapat menemukan ini:
Korn shell prompt:
Bash prompt:
Ini memberikan prompt berwarna yang sama (ya, saya berbicara bahasa Inggris Ratu;)) dalam format:
Setara DOS (meskipun tidak ada pilihan warna) adalah:
pemberian yang mana:
">" Menyimpannya 'DOSSY' daripada 'nixy' dengan "$", tetapi jika Anda menginginkan sigil ("$"), maka itu adalah:
Asalkan akun login Anda memiliki izin yang diperlukan, untuk membuat 'nixies' secara permanen menambahkannya dengan "ekspor":
dan ubah DOSSY menjadi:
atau
sumber