2009-07-06 9 views
8

Tôi muốn thực hiện bất kỳ chương trình nào xuất ra màn hình, bắt đầu ra và tô màu các từ khóa nhất định trước khi chúng xuất ra màn hình. Ví dụ, đây là chương trình đầu ra bình thường:Làm thế nào để bạn tự động tô màu đầu ra chương trình trong bash shell?

bash# <program> 
blah blah blah  <-- this output has no color 

vs

bash# <program> 
blah blah blah  <-- this output is colorful 

Lý tưởng nhất là nó không quan trọng những gì chương trình là. Tôi chỉ tìm kiếm một cách tốt để kết hợp nhiều màu sắc hơn vào các konsoles của tôi.

Chỉnh sửa: Rất tiếc, nên rõ ràng. Tôi không cố gắng để chỉ colorize shell script đầu ra.

+0

Cho gợi ý của Pete thử: yourprogram | ack --passthru - color "(keyword1 | keyword2 | keyword3)" –

Trả lời

7
#!/bin/sh 
redf=$(tput setaf 1) 
redb=$(tput setab 1) 
reset=$(tput op) 
echo "${redf}red${reset} in front, ${redb}red${reset} in back" 

Xem terminfo để có danh sách dài khả năng đầu cuối. Một $TERM với hậu tố -m (ví dụ ansi-m) có nghĩa là màn hình đơn sắc, nhưng miễn là tác phẩm màu, khả năng chuỗi sau nên không có sản phẩm nào:

 
     enter_bold_mode    bold   md  turn on bold (extra 
                  bright) mode 
     enter_italics_mode   sitm   ZH  Enter italic mode 
     enter_reverse_mode   rev   mr  turn on reverse 
                  video mode 
     orig_pair      op   op  Set default pair to 
                  its original value 
     set_a_background    setab  AB  Set background 
                  color to #1, using 
                  ANSI escape 
     set_a_foreground    setaf  AF  Set foreground 
                  color to #1, using 
                  ANSI escape 

Màu sắc 0-7 là khá nhiều tiêu chuẩn: màu đen, đỏ, xanh lá cây, vàng, xanh dương, đỏ tươi, lục lam, trắng. Ngoài ra, điều đó có thể không tồn tại hoặc có thể có nhiều biến đổi hơn.

3

Bạn có thể viết tập lệnh tạo màu. Có một hướng dẫn tuyệt vời tại đây http://www.faqs.org/docs/abs/HTML/colorizing.html

+0

Ugh ... thực sự không nên nói với mọi người sử dụng ANSI hoặc VT10x thoát bằng tay. termcap và terminfo đã tồn tại cho * eons * cho mục đích giữ tất cả các loại thông tin đầu cuối cụ thể như thế này. – ephemient

+0

@ephemient, ngoại trừ không ai sử dụng thiết bị đầu cuối thực từ nhiều thập kỷ và giờ đây chỉ là tiêu chuẩn phần mềm: Có thể giả định trình mô phỏng thiết bị đầu cuối tương thích với VT10x, để tránh các vấn đề 'ncurses'. – Hibou57

+0

Nhân tiện, một số tài liệu tham khảo tốt: ftp: //ftp.cs.utk.edu/pub/shuford/thiết bị đầu cuối / – Hibou57

5

Chương trình ack là một phiên bản của grep làm nổi bật màu của biểu thức chính quy khớp với đầu ra của nó. Bạn có thể sử dụng nó để làm màu cho bạn, hoặc bạn có thể nghiên cứu mã Perl của nó.

Một tùy chọn khác là đặt ống vào grep của GNU, với đối số --color=always hoặc --color=auto.

0

Thử đơn giản và rực rỡ generic colouriser (homepage):

Generic Colouriser lại là một colouriser (viết bằng python) cho đẹp log hoặc đầu ra của lệnh của bạn.

Nó có sẵn trong Debian và là cấu hình sẵn cho nhiều công cụ:

$ grc traceroute www.linux.org 

enter image description here

$ grc tail -25 /var/log/syslog 

enter image description here