回答:
alias cgrep='grep -nR --color'
使用法:
$ cgrep somestring /path/to/dir/or/file/with*/possible/*wild.card
私のお気に入りの1つ:
$ pgrep some-hanging-process
次の状況で使用できるsome-hanging-processの名前に一致するプロセスのすべてのpidをリストします。
$ kill $(pgrep some-hanging-process)
grep
、grep -r
一般的に好まれるべきgrep -R
前者はシンボリックリンクを経由しないと。
grepをポン引きする最良の方法は、ackを使用することであることがわかりました。 perl正規表現。これは、grepが時間の98.6%を実行したいことです。
エイリアスを使用してgrepを再定義する代わりに、これを.bashrcに設定します。
export GREP_OPTIONS="--color=auto"
私にとって、これはLinux、MacOSX、FreeBSDで動作します。
環境変数GREP_OPTIONSを避けることをお勧めします。これは、他のツールに組み込まれているものも含め、grepのすべての呼び出しに影響します。これらのツールがgrepが一方向に動作することを期待している場合、その動作を変更すると、それらのツールが破壊されます。
代わりに、エイリアスを作成できます。これはうまく機能します。これは、対話型シェルからのgrepの呼び出し(つまり、自分で入力する)にのみ影響します。
私が一番気に入っている最後のオプションは、grepを呼び出すラッパースクリプトを作成することです。他のプログラムからこのラッパーを呼び出すことができるので、エイリアスよりもこれを好みます。たとえば、vimgrepを設定してvimを実行すると、vim内からの検索はコマンドラインでの検索と同じように動作します。
$ cat `which grp`
#!/usr/bin/env bash
grep -rI --color --exclude-dir=\.bzr --exclude-dir=\.git --exclude-dir=\.hg --exclude-dir=\.svn --exclude-dir=build --exclude-dir=dist --exclude=tags $*
以下を使用してこれを呼び出します。
$ grp pattern dir
例えば
$ grp pattern .
現在のディレクトリとサブディレクトリ内のすべてのテキストファイルで「パターン」のインスタンスを検索します。
「grep」をシャドウするのではなく、スクリプトを「grp」と呼ぶことに注意してください。これにより、カスタマイズしたデフォルトでgrepを呼び出すかどうかを常に認識できます。
デフォルトでは、次を含めます。
-r : search subdirs recursive
-I : skip binary files
--color : highlight matches in color
--exclude-dir : skip specified directories and their subdirs
--exclude : skip specified files
私は誰もがソース管理ディレクトリをスキップしたいと思うと思います:.hg .git .bzr .svn
「build」と「dist」をスキップすることはPython主義であり、おそらくほとんどの人には当てはまりません。間違いなく、仕事をしながら独自の特異性を身に付けていくでしょう。
「タグ」はctagsの出力で、vimなどのツールで「関数定義に移動」などに使用します。そのため、ソースコードのすべての単語と記号の少なくとも1つのコピーが含まれているため、検索結果からスキップする価値があります。
末尾の「$ *」は「およびコマンドラインからの他のすべてのパラメーター」のbash構文であるため、パターンとdirを渡して通常どおりに検索し、必要な他のコマンドラインフラグをオーバーライドできます。 。
この--color
オプションは既に何度か言及されていますが、環境変数を使用して一致が強調表示される色を構成できることを追加したいと思います
export GREP_COLOR="1;33"
カラーは、参照用にANSIカラーコードを使用してエンコードする必要があります
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37
GREP_COLOR
非推奨です。GREP_COLORS
代わりに使用してください。
実際に色を設定する例は見なかったので、GNU grepの簡単なセットアップを次に示します。
# turn on colors, natch.
export GREP_OPTIONS="--color=auto"
if [[ $(echotc Co) -ge 256 ]]; then
# 256 color terminals
export GREP_COLORS="mt=38;5;118:sl=:cx=:fn=38;5;18:ln=1;30:bn=37:se=30"
else
# everybody else
export GREP_COLORS="mt=31:sl=:cx=:fn=34:ln=1;30:bn=30:se=30"
fi
次のことに注意してくださいGREP_OPTIONS
。のようなもの以外には使用しないでください。そうしない--color=auto
と、システムでgrepを使用するスクリプトが台無しになります。