bashスクリプトからカラー出力を取得する方法は?


9

grepgnome-terminal内から実行すると、色付きの出力が表示されます-簡単に目立つマッチ、さまざまな色の行番号(-n)など

しかし、grepbashスクリプトを使用してまったく同じコマンドを実行すると、色付けせずにプレーン出力が得られます

bashスクリプトを使用してカラー出力を取得する方法はありますか?

回答:


9

--colorシェルスクリプト内でgrepを実行すると、このオプションを使用するとうまくいきます。

ここにあなたが欲しいものの例があります。

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

本当にありがとう。私はgrepのmanページを閲覧--color[=WHEN], --colour[=WHEN]しましたが、うまく説明されていましたが、混乱しました
zetah 2012年

3

tputが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;

これにより、BOLD、UNDERLINE、強調表示、色などの形式で次の出力が印刷されます。

BASHスクリプトはテキスト形式と色で印刷されます


0

これらのエイリアスをあなたに追加しようとしました~/.bashrcか?

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

はい、それらの行は存在しますが、残念ながら、grepをbashスクリプトから実行したときの出力は同じです(色付けなし)。
zetah 2012年

シェルエイリアスは、デフォルトではインタラクティブシェルセッションにのみ影響します。1)コマンドに--colorオプションをgrep明示的に追加(安全)するか、2)expand_aliasesシェルオプションを有効にし、source ~/.bashrc(他のエイリアスが原因で問題が発生しやすくなる)必要があります。1)を調整して、variablを定義し、後でスクリプト内のどこでもGREP="grep --color=auto"使用することができます。$GREPgrep
David Foerster
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.