題 Grep默認顏色選項


grep是linux中最常用的命令之一。我覺得它的基本功能是突出顯示您在輸出行上搜索的字符串。這可以通過--color選項來實現。

每次打字 - 顏色都很煩人,而且效率也不高。有沒有辦法改變grep表現為grep --color。

我試著寫一個名為它的小腳本 grepd 並將其添加到我的PATH變量中。但是腳本在輸入上不起作用 grepd 。請給我任何建議。

#!/bin/bash
grep --color $1 $2

9
2018-05-02 17:52


起源




答案:


只需將以下別名添加到shell的配置文件中,例如 .bashrc 要么 .bash_profile (取決於你使用哪個, 看這裡):

alias grep='grep --color=auto'

你可以簡單地用它 grep

當簡單的命令別名做同樣的事情時,通常不需要編寫腳本。事實上,如果你想傳遞更多選項,你的腳本甚至都不會工作 grep。如果你需要一個可以處理參數的小片段, 你應該使用功能


17
2018-05-02 17:58



或者等效地設置 GREP_OPTIONS 環境變量: export GREP_OPTIONS='--color=always' - Jérôme
如果你使用fgrep或egrep,這不會添加顏色選項,你需要單獨的別名。此外,@Jérôme:GREP_OPTIONS在grep手冊頁中被標記為已棄用。 - Thayne
@Thayne僅適用於GNU grep而不是其他類似FreeBSD grep。據我所知,自改變以來已經過去了4年,而且仍然受到支持。折舊並不意味著被刪除。 - cde
這是我通常做的,但在某些情況下它不能正常工作。例如: some_command | xargs grep foo 不會著色,因為xargs不使用別名。 - TM.


#!/bin/sh
exec grep --color "$@"

這說明了當命令不能按您喜歡的方式工作時,用shell腳本“包裝”命令的標準方法。

exec 避免創建額外的進程(一個用於腳本,一個用於grep)。如果你願意,你可以把它留下來。

"$@" 被所有腳本的參數替換,無論有多少。它正確地保留了包含空格和shell特殊的其他字符的參數。


2
2018-05-03 13:06



“exec grep”應為“exec / bin / grep” - Berend de Boer
@BerenddeBoer不是真的。 “exec grep”會運行得很好。搜索grep的路徑沒有錯。 - Kenster


試試看 export GREP_COLORS='AUTO' 在你的〜/ .bashrc中 - 對我來說它有效。

man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.

-1
2018-05-29 10:00



GREP_COLORS 是設置實際顏色。設置為 AUTO 不應該顯示任何顏色。導出GREP_OPTIONS =' - color = auto'應該是答案。 - user137369