Niektóre polecenia, których używam, wyświetlają kolory, ale kiedy używam ich z zegarkiem, kolory znikają:
watch -n 1 node file.js
Czy można jakoś przywrócić kolory?
Niektóre polecenia, których używam, wyświetlają kolory, ale kiedy używam ich z zegarkiem, kolory znikają:
watch -n 1 node file.js
Czy można jakoś przywrócić kolory?
Odpowiedzi:
Niektóre nowsze wersje watch
obsługują teraz kolor.
Na przykład watch --color ls -ahl --color
.
watch
z git diff
. FWIW, aby dostać się do pracy, że trzeba przejść w --color=always
celu git diff
(np watch --color git diff --color=always
.
Nie używaj watch
... Kiedy używasz zegarka, programy mogą wykryć, że nie piszą do terminala, a następnie usuwają kolor. Musisz użyć określonych flag programu, aby zachować tam kody sterujące.
Jeśli nie znasz flag lub ich nie ma, możesz sprawić, by człowiek biedny patrzył:
while sleep <time>; do clear; <command>; done
Będzie miał trochę migotania (zegarek działa „podwójnie buforowany”), ale do niektórych rzeczy jest wystarczający.
Możesz pokusić się o zrobienie zegarka z podwójnym buforowaniem dla biednych ludzi
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
Ale wtedy ponownie klikniesz opcję „Nie piszę do terminala”.
while sleep <time>; do clear; <command> | tee /tmp/file; done
zamiast >
i cat
?
watch
do, i nie zapobiega migotaniu poleceń
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- Używa tylko wbudowanych poleceń powłoki, aby wyczyścić ekran i wyświetlić dane wyjściowe, dlatego jest najmniej migoczącą alternatywą.
Możesz powielić podstawowe, proste działanie watch
w kilku liniach skryptu powłoki.
$ cat cheapwatch
#!/bin/sh
# Not quite your Rolex
while true ; do
clear
printf "[%s] Output of %s:\n" "$(date)" "$*"
# "$@" <- we don't want to do it this way, just this:
${SHELL-/bin/sh} -c "$*"
sleep 1 # genuine Quartz movement
done
$ ./cheapwatch ls --color # no problem
W końcu ktoś bardzo sprytny włamie tr
polecenie do tego skryptu, który usuwa znaki kontrolne, a następnie zmusi użytkownika --color
do wyłączenia tej logiki. Na razie czysta naiwność tej implementacji powstrzymuje pożerającego kolory potwora.
Jeśli jesteś w sytuacji, w której watch
nie masz --color
opcji i nie możesz zaktualizować pakietu z jakiegokolwiek powodu, może możesz to dorzucić.
TAK
zegarek działa z wyjściem kolorowym. jest częścią pakietu procps (przynajmniej w debianie) tutaj jest raport o błędzie dla twojego pytania http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 gdzie odpowiadają, że powinieneś zaktualizować procps pakiet
np. z ubuntu 11.04 ten pakiet działa http://packages.debian.org/wheezy/procps
tl; dr
aktualizacja procps
Podczas gdy inne odpowiedzi rozwiązują ten problem, najłatwiejszym sposobem osiągnięcia tego jest użycie unbuffer
narzędzia. Aby go użyć, po prostu wykonaj:
$ watch --color 'unbuffer <your-program>'
W ten sposób nie musisz szukać sekwencji sterującej włączającej flagi programu. Zastrzeżenie jest jednak takie, że Twoja wersja zegarka powinna obsługiwać --color
flagę.
Możesz zainstalować unbuffer na Debianie lub Ubuntu za pomocą sudo apt-get install expect
.
'unbuffer <command>'
- bez wydawania konkretnego polecenia, jak to odpowiada na pytanie?
<command>
konkretnego programu, który chcesz uruchomić z kolorami?
Z instrukcji zegarka:
Znaki niedrukowalne są usuwane z wyjścia programu. Użyj "cat -v" jako części potoku poleceń, jeśli chcesz je zobaczyć.
Chociaż nie jestem pewien, jak go używać.
watch -c "ls --color|cat -v"
pokazuje ^[[0m^[[01;34mAgent^[[0m
dla pierwszej linii.
watch --color ls --color=always .