Saat menjalankan git status -sb
Saya melihat:
Saya ingin watch
(dari procps-ng 3.3.3) sebuah repositori. --color
pilihan seharusnya menjaga warna.
Menariknya, ini bekerja dengan ls
:
$ watch --color "ls --color"
Menampilkan:
Namun untuk git
warnanya hilang:
$ watch --color "git status -sb"
Jadi, mengapa watch
tampilkan warna dari ls
tapi bukan dari git
keluaran?
Jawaban yang Diterima:
Pernyataan berikut ini benar:
watch
menjalankan perintah di shell baru,sh
..bashrc
aliasls
sebagails --color=auto
untuk mengaktifkan warna.sh
tidak mewarisi atau menggunakanbash
alias.
Jadi ketika watch
menjalankan ls
, itu tidak meminta warna, itu hanya menjalankan versi lama yang polos. Anda dapat menghindari ini, tetapi—seperti yang ditunjukkan aditya—Anda juga perlu mengaktifkan warna di watch
untuk memprosesnya dengan benar.
Contoh kerja untuk ls
adalah:
watch --color -- ls --color=always
Jika Anda tidak lulus --color
untuk menonton, Anda akan melihat sekumpulan kode warna jelek sebaris.
ls --color
ditafsirkan sebagai ls --color=always
.
ls --color=auto
tidak cetak warna di jam tangan. Ini menunjukkan bahwa itu menyimpulkan dukungan warna dari terminal itu sendiri.
Untuk mengetahui alasannya lebih lanjut, kita dapat menguji apakah cangkang jam menganggapnya sebagai terminal nyata:
$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal
$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.
Saya menduga bahwa beberapa aplikasi melihat itu (atau serupa) untuk mengetahui apakah mereka harus mengaktifkan warna atau tidak.