Der richtige Befehl ist
watch --color "ls -a1 --color"
Es ist weder in der Manpage noch im --help-Bildschirm dokumentiert. Ich muss Strings verwenden, um es zu finden.
Von man watch
:
Nicht druckbare Zeichen werden aus der Programmausgabe entfernt. Verwenden Sie "cat -v" als Teil der Befehlspipeline, wenn Sie sie sehen möchten.
Wie verwende ich also, cat -v
wenn ich die farbige Ausgabe von sehen möchte:
watch ls -al --color
Der richtige Befehl ist
watch --color "ls -a1 --color"
Es ist weder in der Manpage noch im --help-Bildschirm dokumentiert. Ich muss Strings verwenden, um es zu finden.
Ich denke, dass es mit dem Befehl 'watch' nicht möglich ist. Hier ist ein längerer Weg:
while true; do clear; date;echo;ls -al --color; sleep 2; done
Sie könnten dies beispielsweise in ein Skript einfügen:
echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2 chmod +x watch2 ./watch2 ls -al --color
Um dies zu verdeutlichen, glaube ich, dass dies mit dem Befehl 'watch' nicht möglich ist. Sehen Sie, was passiert, wenn Sie cat -v verwenden:
watch "ls -al --color|cat -v"
Es zeigt Ihnen die Farbsteuerungszeichen ... was ich denke, ist nicht das, was Sie wollen.
Wenn Sie einen Mac wie ich watch
von Homebrew verwenden, werden keine Farben unterstützt.
Was Sie wollen, ist fswatch, aber es ist noch kein Homebrew. Um es zu installieren, sollten Sie das etwas mehr komplizierte tun
https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3/Library/Formula/fswatch.rb
Siehe diese SO-Antwort zur Verwendung.
watch
funktioniert nicht mit der Farbausgabe und ich kenne keine Möglichkeit, dies zu tun. Sie können jedoch ein eigenes Skript erstellen, um es zu emulieren.
UPDATE : Stellt sich heraus, dass die neuesten Versionen watch
das Problem behoben haben. Wenn also die Farben watch --color
falsch sind, ist es wahrscheinlich besser, es einfach zu aktualisieren (auf meinem System ist es im procps
Paket).
Die Farbunterstützung watch --color
ist meiner Erfahrung nach begrenzt (wenn auch ausreichend für ls -l --color
). Hier ist meine Version von @ davrs Antwort mit einigen zusätzlichen Funktionen, vor allem reduziertem Flimmern. Sie können es in Ihre .bashrc einfügen und es als verwenden cwatch ls -l --color
.
# `refresh cmd` executes clears the terminal and prints # the output of `cmd` in it. function refresh { tput clear || exit 2; # Clear screen. Almost same as echo -en '\033[2J'; bash -ic "$@"; } # Like watch, but with color function cwatch { while true; do CMD="$@"; # Cache output to prevent flicker. Assigning to variable # also removes trailing newline. output=`refresh "$CMD"`; # Exit if ^C was pressed while command was executing or there was an error. exitcode=$?; [ $exitcode -ne 0 ] && exit $exitcode printf '%s' "$output"; # Almost the same as echo $output sleep 1; done; }
Sie können auch Dinge ausprobieren
cwatch 'ls -l --color | head -n `tput lines`'
wenn Ihr Terminal weniger Zeilen hat als die Ausgabe. Das funktioniert nur, wenn alle Zeilen kürzer als die Klemmenbreite sind. Die beste Lösung, die ich dafür kenne, ist:
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'