Simbol dan karakter yang mengagumkan dalam bash prompt

81

Saya baru saja berlari melintasi tangkapan layar terminal seseorang:

Cuplikan layar sesi yang menampilkan prompt dengan tanda bintang dan panah

Apakah ada daftar semua karakter yang dapat digunakan dalam Bash prompt, atau bisakah seseorang memberi saya karakter untuk bintang dan panah kanan?

Naftuli Kay
sumber

Jawaban:

104

Anda dapat menggunakan karakter apa pun yang dapat dicetak, tetapi bash tidak keberatan. Anda mungkin akan ingin mengkonfigurasi terminal untuk mendukung Unicode (dalam bentuk UTF-8 ).

Ada banyak karakter di Unicode, jadi di sini ada beberapa tips untuk membantu Anda menelusuri grafik Unicode:

  • Anda dapat mencoba menggambar karakter di Shapecatcher . Mencoba mengenali karakter Unicode dalam apa yang Anda gambar.
  • Anda dapat mencoba mencari tahu di mana blok karakter berada. Misalnya, simbol yang tampak aneh dan bintang itu akan berada di blok simbol lain-lain; karakter suka Ǫdan ıadalah huruf latin dengan pengubah; adalah simbol matematika, dan sebagainya.
  • Anda dapat mencoba memikirkan kata dalam deskripsi karakter dan mencarinya dalam daftar nama simbol dan deskripsi unicode. Gucharmap atau Kcharselect dapat membantu.

PS Pada Shapecatcher, saya mendapatkan U + 2234 OLEH KARENA ITU untuk , U + 2192 PANAH KANAN untuk , U + 263F MERCURY untuk dan U + 2605 BLACK STAR untuk .

Dalam skrip bash, hingga bash 4.1, Anda bisa menulis byte berdasarkan titik kode, tetapi bukan karakter. Jika Anda ingin menghindari karakter non-ASCII untuk membuat Anda .bashrctangguh terhadap perubahan pengkodean file, Anda harus memasukkan byte yang sesuai dengan karakter ini dalam pengkodean UTF-8. Anda dapat melihat nilai hexidecimal dengan menjalankan echo ∴ → ☿ ★ | hexdump -Cdi terminal UTF-8, misalnya dikodekan oleh \xe2\x88\xb4dalam UTF-8.

if [[ $LC_CTYPE =~ '\.[Uu][Tt][Ff]-?8' ]]; then
  PS1=$'\\[\e[31m\\]\xe2\x88\xb4\\[\e[0m\\]\n\xe2\x86\x92 \xe2\x98\xbf \\~ \\[\e[31m\\]\xe2\x98\x85 $? \\[\e[0m\\]'
fi

Sejak bash 4.2, Anda dapat menggunakan \udiikuti oleh 4 digit heksadesimal dalam sebuah $'…'string.

  PS1=$'\\[\e[31m\\]\u2234\\[\e[0m\\]\n\u2192 \u263f \\~ \\[\e[31m\\]\u2605 $? \\[\e[0m\\]'
Gilles
sumber
Hmm. Ketika saya menjalankan echo ★ | hexdump -C1, saya mendapatkan: hexdump: invalid option -- '1'. Apakah masih akan berfungsi tanpa angka 1 dalam doa?
Naftuli Kay
2
@TKKocheran Itu 1adalah salah cetak, itu hanya hexdump -C(atau hdsingkatnya pada beberapa sistem).
Gilles
Juga, Anda bisa melakukan: PS1=$'\u2234\u2192\u263f\u2605'merasa lebih mudah untuk mempertahankan :-)
mat
1
Shapecatcher luar biasa! terima kasih telah menunjukkannya
Siamore
1
@ FaithReaper \uNNNNSintaks adalah fitur $'…'mengutip, bukan ekspansi cepat. Nilai PS1harus mengandung karakter Unicode. $'\u1234'adalah cara untuk menempatkan karakter Unicode ke dalam string.
Gilles
12

Anda dapat menemukan simbol unicode di banyak situs, seperti ini: http://panmental.de/symbols/info.htm

Anda hanya perlu memastikan bahwa term Anda mendukung UTF-8 .

jasonwryan
sumber
Bagaimana saya bisa lolos dari salah satu karakter ini? Yaitu\u27A4
Naftuli Kay
2
Lihat jawaban @Gilles, atau ini: stackoverflow.com/questions/602912/…
jasonwryan
Anda dapat melihat semua 65000+ poin unicode di utf8-chartable.de (dalam konteks nilai-nilai titik kode "utf8" identik dengan "unicode".)
goldilocks
4

Saya suka menggunakan alat-alat ini - mereka memiliki pengalaman yang menyenangkan, dan mudah untuk mencari melalui:

Eliran Malka
sumber