Một số lệnh mà tôi sử dụng màu hiển thị, nhưng khi tôi sử dụng chúng với đồng hồ, màu sắc sẽ biến mất:
watch -n 1 node file.js
Có thể có màu sắc trở lại bằng cách nào đó không?
Một số lệnh mà tôi sử dụng màu hiển thị, nhưng khi tôi sử dụng chúng với đồng hồ, màu sắc sẽ biến mất:
watch -n 1 node file.js
Có thể có màu sắc trở lại bằng cách nào đó không?
Câu trả lời:
watch
với git diff
. FWIW, nhận được rằng để làm việc bạn phải vượt qua trong --color=always
để git diff
(ví dụ watch --color git diff --color=always
.
Không sử dụng watch
... Khi bạn sử dụng các chương trình đồng hồ có thể phát hiện ra chúng không ghi vào thiết bị đầu cuối và sau đó tách màu. Bạn phải sử dụng cờ chương trình cụ thể để giữ các mã điều khiển ở đó.
Nếu bạn không biết cờ hoặc không có cờ, bạn có thể khiến người nghèo theo dõi bằng cách:
while sleep <time>; do clear; <command>; done
Nó sẽ có một chút nhấp nháy (đồng hồ hoạt động "bộ đệm kép") nhưng đối với một số thứ, nó đủ hữu ích.
Bạn có thể bị cám dỗ để làm một chiếc đồng hồ của người nghèo có bộ đệm kép bằng cách sử dụng
while sleep <time>; do <command> > /tmp/file; clear; cat /tmp/file; done
Nhưng sau đó bạn sẽ gặp lại tính năng "Tôi không viết thư cho thiết bị đầu cuối".
while sleep <time>; do clear; <command> | tee /tmp/file; done
thay vì >
và cat
?
watch
do và không ngăn lệnh nhấp nháy
watch
while sleep <time> ; do x="$( <command> 2>&1 )" ; clear ; echo "$x" ; done
- Nó chỉ sử dụng các nội trang vỏ để xóa màn hình và hiển thị đầu ra, do đó, đây là giải pháp thay thế ít nhấp nháy nhất.
Bạn có thể sao chép hoạt động cơ bản, không rườm rà watch
trong một vài dòng lệnh shell.
$ cat cheapwatch
#!/bin/sh
# Not quite your Rolex
while 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 movement
done
$ ./cheapwatch ls --color # no problem
Cuối cùng, một người nào đó rất thông minh sẽ hack một tr
lệnh vào tập lệnh này để loại bỏ các ký tự điều khiển, sau đó buộc người dùng sử dụng --color
để vô hiệu hóa logic đó. Vào thời điểm hiện tại, mục đích tuyệt đối của việc thực hiện này là giữ cho con quái vật ăn màu tránh xa.
Nếu bạn đang ở trong tình huống watch
không có --color
tùy chọn và bạn không thể nâng cấp gói vì bất kỳ lý do gì, có thể bạn có thể bỏ qua.
ĐÚNG
đồng hồ hoạt động với đầu ra màu. nó là một phần của gói procps (ít nhất là trong debian) đây là báo cáo lỗi cho câu hỏi của bạn http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=129334 nơi họ trả lời, rằng bạn nên cập nhật procps gói hàng
ví dụ với ubuntu 11.04 gói này hoạt động http://packages.debian.org/wheezy/procps
tl; dr
cập nhật đạo cụ
Trong khi các câu trả lời khác giải quyết vấn đề này, cách dễ nhất để thực hiện điều này là sử dụng unbuffer
công cụ. Để sử dụng nó chỉ cần làm:
$ watch --color 'unbuffer <your-program>'
Bằng cách này, bạn không phải tìm kiếm các cờ trình tự điều khiển cho phép chương trình của bạn. Tuy nhiên, lưu ý là phiên bản đồng hồ của bạn phải hỗ trợ --color
cờ.
Bạn có thể cài đặt bộ đệm trên Debian hoặc Ubuntu bằng cách sử dụng sudo apt-get install expect
.
'unbuffer <command>'
- mà không đưa ra một lệnh cụ thể để sử dụng thì điều này sẽ trả lời câu hỏi như thế nào?
<command>
bằng chương trình cụ thể mà bạn muốn chạy bằng màu sắc không?
Từ hướng dẫn sử dụng đồng hồ:
Các ký tự không in được sẽ bị xóa khỏi đầu ra của 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.
Mặc dù vậy, tôi không chắc chắn về cách sử dụng nó.
watch -c "ls --color|cat -v"
hiển thị ^[[0m^[[01;34mAgent^[[0m
cho dòng đầu tiên.
watch --color ls --color=always .