2010-09-25 6 views
51

Einige Befehle, die ich Display-Farben verwenden, aber wenn ich sie mit Uhr verwenden die Farben verschwindet:Farben mit Unix-Befehl "watch"?

watch -n 1 node file.js 

Ist es möglich, die Farben wieder auf irgendwie haben?

+0

mögliche Duplikate von [Wie kann ich den Watch-Befehl vt100 Sequenzen interpretieren?] (Http://StackOverflow.com/Questions/2417824/How-Cani-Imake-the-watch-Command-interpret-vt100- Sequenzen) – l0b0

Antwort

64

Einige neuere Versionen von watch unterstützen jetzt Farbe.

Zum Beispiel watch --color ls -ahl --color.

Related.

+1

werfen Sie einen Blick auf: http://superuser.com/questions/125469/bash-watch-command-with-colors-preserved (erste Antwort) - Vielleicht können Sie es in Ihrer Antwort verknüpfen. – aatdark

+6

Ich kam hierher, um 'watch' mit' git diff' zu verwenden. FWIW, um das zum Laufen zu bringen, muss man '--color = immer 'auf' git diff' setzen (zB 'watch --color git diff --color = always'. – theabraham

+0

Mit anderen Worten:" Watch * does * arbeiten mit Farbausgabe ". – nobar

1

Von Uhr Handbuch:

Nicht druckbare Zeichen werden von Programmausgabe abgezogen. Verwenden Sie "cat -v" als Teil der Befehlspipeline, wenn Sie sie sehen möchten.

Obwohl ich nicht sicher bin, wie man es benutzt.

+4

Dies bewirkt, 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; 34mgg^[0m' für die erste Zeile. –

11

Sie können die grundlegenden duplizieren, No-Frills-Betrieb von watch in ein paar Zeilen von Shell-Skript.

$ cat cheapwatch 
#!/bin/sh 

# Not quite your Rolex 

while true ; do 
    clear 
    printf "[%s] Output of %s:\n" "$(date)" "$*" 
    # "[email protected]" <- 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 

Schließlich jemand sehr klug einen tr Befehl in dieses Skript hacken, die Steuerzeichen-Streifen, und dann den Benutzer zwingt --color zu verwenden, die Logik zu deaktivieren. Die schiere Naivität dieser Umsetzung hält das farbfressende Monster vorerst fern.

Wenn Sie in einer Situation, wo watch nicht die --color Option haben, und Sie können das Paket aus irgendeinem Grund nicht aktualisieren, vielleicht können Sie dies in werfen.

9

nicht watch verwenden ... Wenn Sie Watch-Programme verwenden, erkennen sie, dass sie nicht an ein Terminal schreiben und dann die Farbe entfernen. Sie müssen bestimmte Programmflags verwenden, um die Steuercodes dort zu behalten.

Wenn Sie nicht wissen, die Flaggen oder gibt es nicht, können Sie einen Mann beobachten Armen machen durch:

while sleep <time>; do clear; <command>; done 

Es wird ein wenig Flimmern haben (Die Uhr läuft „doppelt gepuffert“), aber für einige Sachen, es ist nützlich genug.

Sie können versucht sein, einen doppelten gepufferte armen Mann Uhr

while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done 

mit zu machen, aber dann werden Sie treffen wieder die „ich schreibe nicht an einen Terminal“ -Funktion.

+0

Vielleicht verwenden' während schlafen

+0

mmm Ich bekomme es nicht @ AndréLeria ... | tee wird Farbcodes wie "watch" entfernen tun und nicht verhindern, dass Befehl von flackern – theist

+0

Es ist ein Vorschlag für das zweite Beispiel, das auch nicht mir Farben gibt vielleicht mache ich etwas falsch? –