16

重複の可能性:
bash スクリプトから実行すると grep の色が失われる

grep結果の上にヘッダーを出力する単純な bash スクリプトがあります。

#!/bin/bash

for var in "$@"
do
    if [[ $var != -* ]];
    then
        break 
    fi
done

echo
echo -en "\e[1;31m     ====== GREP $var ======\e[0m\n"
echo

grep $@

しかし、最終的なコマンドはgrep、結果に色が含まれていないため、実際にプロンプ​​トから直接実行した場合とは多少異なります。直接実行grepすると、結果にはファイル名が紫で一致が赤で表示されますが、すべての出力は通常の端末テキストの色になります。私のスクリプトから色付きのバージョンを取得する方法を教えてもらえますか?

4

2 に答える 2

22

インタラクティブ モードでない場合、grep は色を生成しないようです。色付きの出力を生成するように強制できます。

grep --color=always $@
于 2012-09-07T16:12:17.330 に答える
11

grep には、Auto、Always、Off の 3 つのカラー モードがあります。

パイプなどの非対話型出力に接続されている場合、自動でコードが取り除かれます (理由を知りたい場合は、出力をファイルにリダイレクトしてgrep --color=alwaysから、ファイルを調べてください..あらゆる場所の制御コード)

于 2012-09-07T22:24:43.980 に答える