Alcuni comandi che uso visualizzano i colori, ma quando li uso con watch i colori scompaiono:
watch -n 1 node file.js
È possibile riavere i colori in qualche modo?
Alcuni comandi che uso visualizzano i colori, ma quando li uso con watch i colori scompaiono:
watch -n 1 node file.js
È possibile riavere i colori in qualche modo?
Risposte:
Alcune versioni più recenti watch
ora supportano il colore.
Ad esempio watch --color ls -ahl --color
.
watch
con git diff
. FWIW, per farlo funzionare devi passare --color=always
a git diff
(es watch --color git diff --color=always
.
Non usare watch
... Quando si utilizza watch, i programmi possono rilevare che non stanno scrivendo su un terminale e quindi rimuovere il colore. È necessario utilizzare flag di programma specifici per mantenere i codici di controllo lì.
Se non conosci le bandiere o non ci sono puoi fare in modo che un povero guardi:
while sleep <time>; do clear; <command>; done
Avrà un po 'di sfarfallio (l'orologio funziona in "doppio buffer") ma per alcune cose è abbastanza utile.
Potresti essere tentato di fare un orologio per poveri con doppio buffer usando
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
Ma poi premerai di nuovo la funzione "Non sto scrivendo su un terminale".
while sleep <time>; do clear; <command> | tee /tmp/file; done
posto di >
e cat
?
watch
fare e non impedisce lo sfarfallio del comando
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- Utilizza solo i builtin della shell per cancellare lo schermo e visualizzare l'output, essendo quindi l'alternativa meno tremolante.
Puoi duplicare l'operazione fondamentale e senza fronzoli di watch
in un paio di righe di script di shell.
$ 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
Alla fine, qualcuno molto intelligente hackererà un tr
comando in questo script che rimuove i caratteri di controllo e quindi costringerà l'utente a utilizzare --color
per disabilitare quella logica. Per il momento, l'assoluta ingenuità di questa implementazione sta tenendo lontano il mostro mangia-colori.
Se ti trovi in una situazione in cui watch
non hai l' --color
opzione e non puoi aggiornare il pacchetto per qualsiasi motivo, forse puoi lanciarlo.
SÌ
l'orologio funziona con l'output a colori. fa parte del pacchetto procps (almeno in debian) ecco bugreport per la tua domanda http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 dove rispondono, che dovresti aggiornare procps pacchetto
ad esempio, con ubuntu 11.04 questo pacchetto funziona http://packages.debian.org/wheezy/procps
tl; dr
update procps
Mentre altre risposte risolvono questo problema, il modo più semplice per farlo è utilizzare lo unbuffer
strumento. Per usarlo basta fare:
$ watch --color 'unbuffer <your-program>'
In questo modo non devi cercare la sequenza di controllo che abilita i flag del tuo programma. L'avvertenza, tuttavia, è che la tua versione dell'orologio dovrebbe supportare la --color
bandiera.
Puoi installare unbuffer su Debian o Ubuntu usando sudo apt-get install expect
.
'unbuffer <command>'
- senza dare un comando specifico da usare come risponde alla domanda?
<command>
con il programma specifico che desideri eseguire con i colori?
Dal manuale dell'orologio:
I caratteri non stampabili vengono rimossi dall'output del programma. Usa "cat -v" come parte della pipeline dei comandi se vuoi vederli.
Tuttavia, non sono sicuro di come usarlo.
watch -c "ls --color|cat -v"
mostra ^[[0m^[[01;34mAgent^[[0m
per la prima riga.
watch --color ls --color=always .