2012-03-03 67 views
24

我寫了一個簡單的bash腳本,因爲我反覆使用帶有相同參數的grep命令。我從〜/ bin運行它,它運行得很好。grep從bash腳本運行時丟失着色

我的問題是:當它通過我的bash腳本運行時,所有着色都消失了。相同的指令擺正進入命令行很好的顏色代碼的行號,文件名等

這裏是我的bash腳本

#!/bin/bash 
# grep php files inside of myfolder, recursively and with line numbers 

grep -rn --include="*.php" "$2" /home/me/myfolder/$1 

回答

40

你可能在你的.bashrc定義grep的別名,grep --color=auto,但這不是由腳本加載的。在腳本中使用明確的grep --color

+1

嘿,那也是:D – PlexQ 2012-03-03 23:49:13

+0

我把它和--color = auto一起使用,它不起作用 – juanmf 2018-02-08 17:48:31

0

當你運行一個腳本時,會產生一個新的shell。這個新環境沒有與默認外殼相同的設置。至於如何得到着色,我不確定。您可以嘗試在腳本的開始採購您的個人資料:

#!/bin/bash 
source $HOME/.bash_profile 

或任何文件,使您的特定UNIX版本(.profile文件,.bash_rc,.bashrc中的.bash_profile)感僅舉幾例。

+0

我試着用'source $ HOME/.bashrc'和'source $ HOME/.profile',但它沒有不爲我工作。我真的希望這將成爲解決方案,以便我將不必在將來的腳本中明確說明'--color'或任何其他不可預見的參數。 – jairbow 2012-03-04 02:14:30

+1

您可以將選項導出到腳本的環境中:'export GREP_OPTIONS =' - color = always'' – Thor 2012-09-07 16:23:51