Podczas pracy git status -sb
widzę:
Chcę watch
(od procps-ng 3.3.3) repozytorium. Ta --color
opcja ma zachować kolory.
Co ciekawe, współpracuje z ls
:
$ watch --color "ls --color"
Seans:
Jednak git
kolory znikają:
$ watch --color "git status -sb"
Dlaczego więc watch
pokazuje kolory z, ls
ale nie z git
wydruku?
git
watch-command
Drew Noakes
źródło
źródło
Odpowiedzi:
Następujące stwierdzenia są prawdziwe:
watch
uruchamia komendę w nowej powłoce,sh
..bashrc
aliasyls
jakls --color=auto
włączyć kolorów.sh
nie dziedziczy ani nie używabash
aliasów.Więc kiedy
watch
działals
, nie prosi o kolory, po prostu uruchamia zwykłą starą wersję. Możesz to obejść, ale - jak wskazuje aditya - musisz także włączyć kolorywatch
, aby je poprawnie przetworzyć.Działającym przykładem
ls
jest:Jeśli nie przejdziesz
--color
do oglądania, zobaczysz w środku kilka brzydkich kodów kolorów.ls --color
jest interpretowany jakols --color=always
.ls --color=auto
nie drukuje kolorów w zegarku. Sugeruje to, że wnioskuje o obsługę kolorów z samego terminala.Aby dowiedzieć się więcej o tym, dlaczego, możemy sprawdzić, czy powłoka zegarka uważa, że to prawdziwy terminal :
Podejrzewam, że niektóre aplikacje patrzą na to (lub podobnie), aby stwierdzić, czy powinny włączyć kolory, czy nie.
źródło
git status -sb
, nawet jeśli działals --color
.git
. Kolor jest ustawiany bezpośrednio w konfiguracji gita . Więc to nie wydaje się być problemem aliasingu.auto
których, jak słusznie przypuszczałeś, git unikał kolorów. Używaniealways
zamiast tego rozwiązało ten problem. Wielkie dzięki!git
używa wartości konfiguracji do ustalenia, czy wyświetlać kolorowe wydruki, czy nie.Na przykład:
To ustawia
auto
globalne ustawienie kolorów . Wauto
trybie git określi, czy jest to prawdziwy terminal przed wysłaniem kodów kolorów, jak zasugerował Oli.Możesz wymusić tę globalną wartość
always
, jednak lepszym pomysłem może być zastosowanie jej do określonego polecenia:Kładąc wszystko razem:
źródło
Działa, jeśli
git
(--color
) iwatch
(-c
) zostaną poproszone o użycie kolorów:źródło