Di saya .bashrc
, saya menggunakan kode warna terminal ANSI untuk mewarnai berbagai bit. Ini terlihat seperti ini:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
di mana virtual_env
dan git_branch
adalah fungsi bash yang menampilkan barang di stdout.
Sekarang, untuk membuatnya lebih mudah dibaca dan dimodifikasi, saya ingin menyimpan kode warna dalam variabel dan merujuknya, alih-alih menanamkannya langsung ke PS1
. Jadi saya punya banyak variabel seperti ini:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
Saya ingin dapat menulis sesuatu seperti:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Tapi ini tidak berhasil - kode warna muncul di prompt, seperti mereka melarikan diri. Warna berfungsi dengan benar jika saya menggunakan tanda kutip ganda sebagai gantinya PS1
, tapi kemudian prompt hanya berubah ketika saya melakukannya source ~/.bashrc
.
Saya sudah mencoba hal-hal lain saya pernah melihat orang melakukan - menggunakan printf
, menggunakan tanda kutip tunggal untuk warna, menempatkan \[
dan \]
di PS1
bukannya variabel warna, tapi sepertinya tidak ada pekerjaan.
Bagaimana saya bisa menggunakan variabel untuk kode warna?
.bashrc
?