2012-09-07 65 views
4

可能重複:
grep loses coloring when run from bash script爲什麼grep在從bash腳本執行時會丟失彩色輸出?

我有一個簡單的bash腳本打印在我的grep結果頂部的標題:

#!/bin/bash 

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

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

grep [email protected] 

但最後的命令是莫名其妙與實際從提示中直接運行grep不同,因爲結果中缺少顏色。直接執行grep時,結果顯示文件名爲紫色,匹配爲紅色,但現在所有輸出都是正常的終端文本顏色。有人能告訴我如何從我的腳本中獲取彩色版本嗎?

+1

提示:如何知道grep輸出顏色? – HonkyTonk

+4

你試過'--color = always'嗎? – Shahbaz

+0

是的,它基本上是一個重複的...我的壞。 –

回答

8

看起來像grep不會在交互模式下產生顏色。你可以強制它產生彩色輸出:

grep --color=always [email protected] 
6

grep有3種顏色模式,自動,始終和關閉。

當代碼連接到非交互式輸出(如管道)時(如果您想明白爲什麼,請嘗試將grep --color=always的輸出重定向到文件中,然後查看該文件時,自動去除代碼..無處不在的控制代碼)