Làm thế nào để có được đầu ra màu từ tập lệnh bash?


9

Khi tôi thực hiện greptừ bên trong gnome-terminal, tôi nhận được đầu ra màu - dễ dàng nhận thấy khớp, số dòng (-n) với các màu khác nhau, v.v.

Nhưng khi tôi thực thi chính xác cùng một greplệnh thông qua bash script, tôi nhận được đầu ra máy bay, không tô màu

Có cách nào để tôi có thể lấy đầu ra màu bằng cách sử dụng tập lệnh bash không?

Câu trả lời:


9

Sử dụng --colortùy chọn hoạt động cho tôi khi tôi chạy grep bên trong các tập lệnh shell.

Dưới đây là một ví dụ về những gì bạn muốn.

grep -n --color=auto "PATTERN" FILE

Quả thực cảm ơn. Tôi duyệt trang grep man nhưng --color[=WHEN], --colour[=WHEN]làm tôi bối rối, mặc dù nó được giải thích tốt
zetah

3

Đây là một đoạn script nhỏ giúp bạn hiểu được cách thức hoạt động của bash

#!/bin/bash
#@auth kesavan.muthuvel
#@desc - bash with colors :)

B=`tput bold`           #BOLD
D=`tput dim`            #DIM
U=`tput sgr 0 1`        #UNDERLINE
U2=`tput smul`          #UNDERLINE2
NOU=`tput rmul`         #NO UNDERLINE
H=`tput smso`           #HIGHLIGHT
X=`tput sgr0`           #RESET
C='tput setaf '         #COLOR


for i in 0 1 2 3 4 5 6 7 ; do
        c=`$C$i` && echo $c${B}I${U}always$NOU $D love \
           ${U2}colors$NOU \& $c${H}GNU/Linux$X
done;

Điều này sẽ in ra sau đây với các định dạng như BOLD , gạch dưới, Highlighting và màu sắc.

BASH Script in với định dạng văn bản và MÀU SẮC


0

Bạn đã cố gắng thêm những bí danh này vào ~/.bashrc?

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'

Có, những dòng đó có mặt, nhưng không may là đầu ra giống nhau (w / o màu) khi grep được chạy từ tập lệnh bash.
zetah

Các bí danh Shell chỉ có tác dụng đối với các phiên shell tương tác theo mặc định. Bạn cần 1) thêm --colortùy chọn vào greplệnh một cách rõ ràng (an toàn) hoặc 2) kích hoạt expand_aliasestùy chọn shell và source ~/.bashrc(dễ xảy ra sự cố vì có thể có các bí danh khác). Bạn có thể tinh chỉnh 1) và xác định một từ khóa GREP="grep --color=auto"và sau đó sử dụng $GREPthay vì grepở mọi nơi trong tập lệnh của bạn.
David foerster
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.