Einige Befehle, die ich verwende, zeigen Farben an, aber wenn ich sie mit watch verwende, verschwinden die Farben:
watch -n 1 node file.js
Ist es möglich, die Farben irgendwie wieder zu haben?
Einige Befehle, die ich verwende, zeigen Farben an, aber wenn ich sie mit watch verwende, verschwinden die Farben:
watch -n 1 node file.js
Ist es möglich, die Farben irgendwie wieder zu haben?
Antworten:
Einige neuere Versionen watch
unterstützen jetzt Farbe.
Zum Beispiel watch --color ls -ahl --color
.
watch
mit git diff
. FWIW, um das zum Laufen zu bringen, müssen Sie --color=always
an git diff
(z watch --color git diff --color=always
. B.
Nicht verwenden watch
... Wenn Sie Überwachungsprogramme verwenden, können Sie erkennen, dass sie nicht auf ein Terminal schreiben, und dann die Farbe entfernen. Sie müssen bestimmte Programmflags verwenden, um die Steuercodes dort zu behalten.
Wenn Sie die Flaggen nicht kennen oder nicht, können Sie einen armen Mann dazu bringen, zuzusehen, indem Sie:
while sleep <time>; do clear; <command>; done
Es wird ein bisschen flackern (Uhr funktioniert "doppelt gepuffert"), aber für einige Dinge ist es nützlich genug.
Sie könnten versucht sein, eine doppelt gepufferte Uhr für arme Männer herzustellen
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
Aber dann drücken Sie erneut die Funktion "Ich schreibe nicht an ein Terminal".
while sleep <time>; do clear; <command> | tee /tmp/file; done
anstelle von >
und verwenden cat
?
watch
do und verhindert nicht das Flackern des Befehls
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- Es werden nur integrierte Shell-Funktionen verwendet, um den Bildschirm zu löschen und die Ausgabe anzuzeigen. Dies ist daher die am wenigsten flackernde Alternative.
Sie können die grundlegende, schnörkellose Operation watch
in ein paar Zeilen Shell-Skript duplizieren .
$ 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
Irgendwann hackt jemand, der sehr klug ist, einen tr
Befehl in dieses Skript, der die Steuerzeichen entfernt, und zwingt den Benutzer --color
, diese Logik zu deaktivieren. Die schiere Naivität dieser Implementierung hält das farbfressende Monster vorerst fern.
Wenn Sie sich in einer Situation befinden, in watch
der die --color
Option nicht verfügbar ist und Sie das Paket aus irgendeinem Grund nicht aktualisieren können, können Sie dies möglicherweise einwerfen.
JA
Uhr arbeitet mit Farbausgabe. Es ist Teil des Procps-Pakets (zumindest in Debian). Hier ist ein Fehlerbericht für Ihre Frage http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334, in dem sie antworten, dass Sie den Procps aktualisieren sollten Paket
zB mit Ubuntu 11.04 funktioniert dieses Paket http://packages.debian.org/wheezy/procps
tl; dr
Procps aktualisieren
Während andere Antworten dieses Problem lösen, ist der einfachste Weg, dies zu erreichen, die Verwendung des unbuffer
Tools. Um es zu benutzen, machen Sie einfach:
$ watch --color 'unbuffer <your-program>'
Auf diese Weise müssen Sie nicht nach Kontrollsequenzen suchen, die Flags Ihres Programms aktivieren. Die Einschränkung ist jedoch, dass Ihre Version der Uhr die --color
Flagge unterstützen sollte.
Sie können Unbuffer unter Debian oder Ubuntu mit installieren sudo apt-get install expect
.
'unbuffer <command>'
- ohne einen bestimmten Befehl zu geben, wie verwendet dies die Frage?
<command>
durch das spezifische Programm, das Sie mit Farben ausführen möchten?
Aus dem Handbuch der Uhr:
Nicht druckbare Zeichen werden aus der Programmausgabe entfernt. Verwenden Sie "cat -v" als Teil der Befehlspipeline, wenn Sie sie sehen möchten.
Ich bin mir jedoch nicht sicher, wie ich es verwenden soll.
watch -c "ls --color|cat -v"
zeigt ^[[0m^[[01;34mAgent^[[0m
für die erste Zeile.
watch --color ls --color=always .