Od man watch
:
Znaki niedrukowalne są usuwane z wyników programu. Użyj „cat -v” jako części potoku poleceń, jeśli chcesz je zobaczyć.
Jak więc użyć, cat -v
jeśli chcę zobaczyć kolorowe wyjście z:
watch ls -al --color
Od man watch
:
Znaki niedrukowalne są usuwane z wyników programu. Użyj „cat -v” jako części potoku poleceń, jeśli chcesz je zobaczyć.
Jak więc użyć, cat -v
jeśli chcę zobaczyć kolorowe wyjście z:
watch ls -al --color
Odpowiedzi:
Prawidłowe polecenie to
watch --color "ls -a1 --color"
Nie jest to udokumentowane na stronie podręcznika ani na ekranie --help. Muszę go użyć, aby go znaleźć.
watch --color "sudo iwlist wlan0 scanning | egrep 'Quality|ESSID' | egrep --color -i 'foobar|$'"
zjadają kolory :(
watch
Z procps (domyślna w większości dystrybucji Linuksa, wierzę) ma --color
opcję, ponieważ V3.3.2.
Myślę, że może to nie być możliwe z poleceniem „obserwuj”. Oto dłuższy sposób na zrobienie tego:
while true; do clear; date;echo;ls -al --color; sleep 2; done
Możesz umieścić to w skrypcie, na przykład:
echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color
Aby to wyjaśnić, oto dlaczego myślę, że nie jest to możliwe dzięki poleceniu „obserwuj”. Zobacz, co się stanie, jeśli użyjesz cat -v:
watch "ls -al --color|cat -v"
Pokazuje znaki sterujące kolorem ... które moim zdaniem nie są tym, czego chcesz.
man watch
wyraźnie sugeruje, że powinno to być możliwe bez pogardy watch
.
cat -v
aby zobaczyć, o czym man watch
mówiłeś.
while true; do out=$(date;echo;ls -al --color);clear;echo $out;sleep 2;done
echo "$out"
. stackoverflow.com/q/2414150/86967
Jeśli używasz komputera Mac, takiego jak ja, watch
Homebrew nie obsługuje kolorów.
To, czego chcesz, to fswatch, ale nie jest to jeszcze Homebrew. Aby go zainstalować, musisz zrobić nieco bardziej skomplikowany
https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3/Library/Formula/fswatch.rb
Zobacz tę odpowiedź SO dotyczącą użytkowania.
watch
dotyczy polecenia
AKTUALIZACJA : okazuje się, że najnowsze wersje watch
rozwiązały problem. Jeśli więc kolory watch --color
są nieprawidłowe, prawdopodobnie lepiej po prostu je zaktualizować (w moim systemie jest w procps
pakiecie).
Obsługa kolorów watch --color
w moim doświadczeniu jest ograniczona (choć wystarczająca ls -l --color
). Oto moja wersja odpowiedzi @ davr z kilkoma dodatkowymi funkcjami, przede wszystkim zmniejszonym migotaniem. Możesz umieścić go w swoim .bashrc i używać go jako 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;
}
Możesz także spróbować takich rzeczy jak
cwatch 'ls -l --color | head -n `tput lines`'
jeśli twój terminal ma mniej linii niż wyjście. Działa to tylko wtedy, gdy wszystkie linie są krótsze niż szerokość terminala. Najlepsze obejście, jakie znam na to:
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'