Dalam Bash Prompt (variabel PS1), saya memanggil fungsi untuk berpotensi menambahkan teks ke prompt: export PS1="\u@\h \$(my_function) \$ "
Namun, fungsi di prompt berisi kode warna ANSI yang berubah berdasarkan output fungsi (kadang-kadang merah, kadang-kadang hijau). Menambahkan " \[
" ke variabel PS1 harus lolos dari kode-kode itu sebagai non-pencetakan, tetapi jika saya melakukan suatu echo
fungsi, " \[
" akan dicetak secara harfiah di prompt.
Bagaimana saya bisa lepas kode warna ANSI ini dari dalam fungsi untuk digunakan dalam bash prompt?
echo -e "\001\e[31m\002RED"
bekerja seperti yang diharapkan. Terima kasih!\001
dan\002
akan bekerja. Kalau tidak, saya tidak yakin. Dash misalnya tidak menggunakan readline .Inilah jawaban lengkap yang bagus. Saya harus melakukan lebih banyak penggalian untuk mencari tahu ke mana \ 001 dll harus pergi. Semoga ini membantu.
Cara saya mengaturnya di sini, kurung cabang git hanya muncul jika Anda berada di cabang git, jika tidak maka kosong.
sumber
Berdasarkan jawaban grawity , berikut ini akan menyertakan urutan kontrol ANSI di ASCII
SOH
(^A
) danSTX
(^B
) yang setara dengan\[
dan\]
masing - masing:Gunakan seperti:
Atau:
Sebagai bonus, menjalankan fungsi beberapa kali tidak akan keluar lagi dari kode kontrol yang sudah lolos.
sumber
Jika Anda ingin menggunakannya dalam prompt, maka Anda perlu melakukan itu
\[
. Tetapi jika Anda ingin menggunakannya dalam gema, Anda harus menggunakannya\033[
.sumber