Từ man watch
:
Các ký tự không in được tước khỏi đầu ra chương trình. Sử dụng "cat -v" như một phần của đường dẫn lệnh nếu bạn muốn xem chúng.
Vậy làm thế nào để tôi sử dụng cat -v
nếu tôi muốn xem đầu ra màu từ:
watch ls -al --color
Từ man watch
:
Các ký tự không in được tước khỏi đầu ra chương trình. Sử dụng "cat -v" như một phần của đường dẫn lệnh nếu bạn muốn xem chúng.
Vậy làm thế nào để tôi sử dụng cat -v
nếu tôi muốn xem đầu ra màu từ:
watch ls -al --color
Câu trả lời:
Lệnh đúng là
watch --color "ls -a1 --color"
Nó không được ghi lại trong trang man hoặc màn hình --help. Tôi phải sử dụng chuỗi để tìm nó.
watch --color "sudo iwlist wlan0 scanning | egrep 'Quality|ESSID' | egrep --color -i 'foobar|$'"
sẽ ăn màu :(
watch
từ procps (mặc định trên hầu hết các distro Linux, tôi tin rằng) có một --color
tùy chọn từ V3.3.2.
Tôi nghĩ rằng nó có thể là không thể với lệnh 'xem'. Đây là một cách dài hơn để làm điều đó:
while true; do clear; date;echo;ls -al --color; sleep 2; done
Bạn có thể đặt điều này trong một tập lệnh, ví dụ:
echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color
Để làm rõ, đây là lý do tại sao tôi nghĩ rằng điều đó là không thể với lệnh 'xem'. Xem điều gì xảy ra nếu bạn sử dụng mèo -v:
watch "ls -al --color|cat -v"
Nó cho bạn thấy các ký tự điều khiển màu ... mà tôi nghĩ không phải là thứ bạn muốn.
man watch
rõ ràng gợi ý rằng nó nên có thể mà không cần mổ xẻ watch
.
cat -v
để xem những gì man watch
đang nói về.
while true; do out=$(date;echo;ls -al --color);clear;echo $out;sleep 2;done
echo "$out"
. stackoverflow.com/q/2414150/86967
Nếu bạn đang sử dụng máy Mac, như tôi, watch
từ Homebrew không hỗ trợ màu.
Những gì bạn muốn là fswatch nhưng nó chưa phải là Homebrew. Để cài đặt, bạn sẽ muốn làm một chút phức tạp hơn
https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3/Library/Formula/fswatch.rb
Xem câu trả lời SO này để sử dụng.
watch
áp dụng cho một lệnh
CẬP NHẬT : Hóa ra các phiên bản mới nhất đã watch
khắc phục sự cố. Vì vậy, nếu màu sắc watch --color
sai, có lẽ tốt hơn là chỉ cập nhật nó (trên hệ thống của tôi, nó nằm trong procps
gói).
Sự hỗ trợ màu sắc watch --color
bị hạn chế theo kinh nghiệm của tôi (mặc dù đủ cho ls -l --color
). Đây là phiên bản trả lời của @ davr với một số tính năng bổ sung, quan trọng nhất là giảm nhấp nháy. Bạn có thể đặt nó trong .bashrc của bạn và sử dụng nó như 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;
}
Bạn cũng có thể thử những thứ như
cwatch 'ls -l --color | head -n `tput lines`'
nếu thiết bị đầu cuối của bạn có ít dòng hơn đầu ra. Điều đó chỉ hoạt động nếu tất cả các dòng ngắn hơn chiều rộng thiết bị đầu cuối, mặc dù. Cách giải quyết tốt nhất mà tôi biết đó là:
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'