Saat berlari git status -sb
saya melihat:
Saya ingin watch
(dari procps-ng 3.3.3) repositori. The --color
opsi seharusnya untuk menjaga warna.
Menariknya, ini bekerja dengan ls
:
$ watch --color "ls --color"
Menunjukkan:
Namun untuk git
warna hilang:
$ watch --color "git status -sb"
Jadi, mengapa watch
menunjukkan warna dari ls
tetapi bukan dari git
output?
git
watch-command
Drew Noakes
sumber
sumber
Jawaban:
Pernyataan berikut ini benar:
watch
menjalankan perintah di shell barush
,..bashrc
aliasls
sebagails --color=auto
untuk mengaktifkan warna.sh
tidak mewarisi atau menggunakanbash
alias.Jadi ketika
watch
dijalankanls
, itu tidak meminta warna, itu hanya menjalankan versi lama. Anda dapat menghindari ini tetapi — seperti yang ditunjukkan aditya — Anda juga perlu mengaktifkan warnawatch
agar dapat memprosesnya dengan benar.Contoh untuk bekerja
ls
adalah:Jika Anda tidak lulus
--color
untuk menonton, Anda akan melihat banyak kode warna jelek sebaris.ls --color
diartikan sebagails --color=always
.ls --color=auto
tidak mencetak warna di arloji. Ini menunjukkan bahwa itu menyimpulkan dukungan warna dari terminal itu sendiri.Untuk alasan lebih lanjut, kami dapat menguji apakah arloji arloji menganggapnya terminal nyata :
Saya menduga bahwa beberapa aplikasi melihat itu (atau serupa) untuk mengetahui apakah mereka harus mengaktifkan warna atau tidak.
sumber
git status -sb
, meskipun bekerja dengan baikls --color
.git
. Warna diatur dalam konfigurasi git secara langsung . Jadi ini sepertinya tidak menjadi masalah alias.auto
yang, seperti yang Anda duga dengan benar, menyebabkan git untuk menghindari keluaran warna. Penggunaanalways
sebaliknya telah memecahkan masalah ini. Terimakasih banyak!git
menggunakan nilai konfigurasi untuk menentukan apakah akan menampilkan keluaran berwarna atau tidak.Sebagai contoh:
Ini mengatur pengaturan warna ke
auto
global. Dalamauto
mode, git akan menentukan apakah itu terminal asli sebelum mengirim kode warna, seperti yang disarankan Oli.Anda dapat memaksakan nilai global ini
always
, namun ide yang lebih baik mungkin untuk menerapkannya pada perintah tertentu:Menyatukan semuanya:
sumber
Ini berfungsi jika
git
(--color
) danwatch
(-c
) disuruh menggunakan warna:sumber