Werfen Sie einen Blick auf: superuser.com/questions/125469/… (erste Antwort) - Vielleicht können Sie es in Ihrer Antwort verknüpfen.
Aatdark
11
Ich bin hergekommen , zu verwenden watchmit git diff. FWIW, um das zum Laufen zu bringen, müssen Sie --color=alwaysan git diff(z watch --color git diff --color=always. B.
Theabraham
31
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".
Vielleicht while sleep <time>; do clear; <command> | tee /tmp/file; doneanstelle von >und verwenden cat?
André Leria
mmm ich verstehe es nicht @ AndréLeria ... | T-Stück entfernt Farbcodes wie watchdo und verhindert nicht das Flackern des Befehls
Theist
Es ist ein Vorschlag für das zweite Beispiel, das mir auch keine Farben gibt. Oder mache ich etwas falsch?
André Leria
1
@ AndréLeria Das zweite "Beispiel" ist ein falsches Beispiel (wie in der Las-Zeile gesagt). Der Punkt ist, dass Sie, sobald Sie eine Pfeife treffen, die Farbcodes verlieren, da Sie nicht in ein Terminal schreiben. Es ist da, um zu zeigen, wie falsch es ist, zu versuchen, das Flimmern aufgrund der Zeitspanne zwischen dem Löschen und der Ausführung des Zielbefehls mit einer Pipe zu kompensieren, um gepuffert zu arbeiten wiewatch
Theist
4
In bash: 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.
Géza Török
18
Sie können die grundlegende, schnörkellose Operation watchin ein paar Zeilen Shell-Skript duplizieren .
$ cat cheapwatch #!/bin/sh# Not quite your Rolexwhile 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 movementdone
$ ./cheapwatch ls --color # no problem
Irgendwann hackt jemand, der sehr klug ist, einen trBefehl 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 watchder die --colorOption nicht verfügbar ist und Sie das Paket aus irgendeinem Grund nicht aktualisieren können, können Sie dies möglicherweise einwerfen.
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
Während andere Antworten dieses Problem lösen, ist der einfachste Weg, dies zu erreichen, die Verwendung des unbufferTools. 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 --colorFlagge 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?
Danoram
@ Danoram Was ist für dich unklar? Benötigen Sie Hilfe beim Ersetzen <command>durch das spezifische Programm, das Sie mit Farben ausführen möchten?
Avamander
@ Avamander Ich hätte diesen Kommentar geschrieben, weil die Frage markiert war. Wenn Sie den Bearbeitungsverlauf überprüfen, wird die Antwort vom Autor aktualisiert. Nichts ist unklar. Mein Kommentar ist einfach nicht mehr relevant.
Danoram
1
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.
Dies führt dazu, dass die Steuerzeichen in der Ausgabe für mich sichtbar sind, anstatt eine Färbung zu verursachen. Zum Beispiel watch -c "ls --color|cat -v"zeigt ^[[0m^[[01;34mAgent^[[0mfür die erste Zeile.
Antworten:
Einige neuere Versionen
watch
unterstützen jetzt Farbe.Zum Beispiel
watch --color ls -ahl --color
.Verwandte .
quelle
watch
mitgit diff
. FWIW, um das zum Laufen zu bringen, müssen Sie--color=always
angit diff
(zwatch --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:
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
Aber dann drücken Sie erneut die Funktion "Ich schreibe nicht an ein Terminal".
quelle
while sleep <time>; do clear; <command> | tee /tmp/file; done
anstelle von>
und verwendencat
?watch
do und verhindert nicht das Flackern des Befehlswatch
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 .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.quelle
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
quelle
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: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
.quelle
'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.
quelle
watch -c "ls --color|cat -v"
zeigt^[[0m^[[01;34mAgent^[[0m
für die erste Zeile.watch --color ls --color=always .