Bagaimana Anda dapat menyesuaikan terminal bash prompt Anda dengan wajah yang tersenyum?

11

Saya mencoba mencari tahu bagaimana saya dapat menyesuaikan bash prompt terminal saya untuk menggunakan wajah yang tersenyum. Apa yang saya inginkan (seperti terlihat pada contoh pukulan) adalah agar cwd dipisahkan dari prompt oleh \ n dan menunjukkan wajah tersenyum hijau jika perintah berhasil, dan wajah sedih merah jika gagal.

Ada ide?

Ini terinspirasi oleh screencast Peepcode.

Contoh

Josh Smith
sumber

Jawaban:

15

Setelah menghabiskan sekitar setengah jam bermain-main dengan kode andhrimnir dan melakukan penelitian lebih lanjut, saya akhirnya mendapatkan apa yang saya inginkan.

PS1="\w \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]\n\xE2\x98\xBA'; else echo -e '\[\e[01;31m\]\n\xE2\x98\xB9'; fi\` \[\e[01;34m\]\[\e[00m\]"

Anda dapat menemukan daftar emotikon di sini dan kemudian mengonversinya menjadi kode byte 3 digit yang Anda lihat setelah karakter baris baru.

Untuk mendapatkannya cwd, yang harus saya lakukan hanyalah menggunakan \w. Anda juga dapat menampilkan pengguna saat ini dengan melakukan \u@\w, yang akan menghasilkan sesuatu seperti joshsmith@~.

Josh Smith
sumber
6

Tampaknya wajah tersenyum yang ditunjukkan di atas adalah karakter unicode 0x263a. Jadi Anda akan membutuhkan terminal berkemampuan unicode (Tidak yakin apakah terminal.app mendukung ini, saya bayangkan memang demikian).

Berikut ini contoh kode yang mencetak wajah tersenyum hijau untuk kode pengembalian 0 dan wajah cemberut merah.

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"

Kredit jatuh ke Fingel di forum Arch (dia diposting di sini ).

jake-rendah
sumber
Pekerjaan luar biasa pada sampel if / then. Saya ingin tahu bagaimana melakukan baris baru, menghapus $, benar-benar menggunakan simbol Unicode, dan membuatnya menunjukkan penuh cwd.
Josh Smith
... dan satu jam kemudian, jawab pertanyaan saya sendiri (terima kasih!).
Josh Smith
1
Senang saya bisa membantu! Ada banyak info di utas di tautan yang saya posting di atas jika Anda ingin mengetahui lebih dalam tentang $PS1hal-hal khusus .
jake-low
Ya, setengah dari penelitian saya dimulai pada utas itu. Sangat membantu. Juga, bagi siapa pun yang ingin lebih mendalam tentang baris perintah, Peepcode memiliki screencast canggih yang hebat.
Josh Smith