私は Linux で特定のキーワードを検索することに慣れています。
たとえば、ホームで「台湾」を検索するには、
grep -i -r TAIWAN ./ | grep -v".svn"
ただし、これは少し冗長だと思いました。入力できるようにエイリアスを使用したい
grep TAIWAN
そして、エイリアスは私のコマンドを次のように展開します
grep -i -r TAIWAN ./ | grep -v".svn"
どうすればこれを達成できますか?
エイリアスを使用することはできませんが、bash関数を作成することはできます。
mygrep () { grep -i -r $* ./ | grep -v".svn"; }
引数を並べ替える方法がないため、エイリアスが目的を達成できるとは思いません。小さなシェル コマンドを作成する方が簡単です。を置き換えるのではなく、特定の方法で動作することgrep
を期待するプログラムを台無しにする可能性があるため、 .grep
rgrep
#!/bin/sh
grep -i -r "$@" | grep -v .svn
PATH
それをなどのどこかに置き、~/bin
で実行可能にしchmod +x ~/bin/rgrep
ます。その後、できますrgrep TAIWAN .
。
残念ながら、これはファイルと同様に含む行を無視します。.svn
grep -v
grep 出力のファイル部分のみに一致するようにパターン マッチを修正することも、...find
の代わりに使用してより複雑なコマンドを作成grep -r
することも、ack を使用することもできます。
Ackはより優れた grep であり、バージョン管理ディレクトリやその他の一般的なファイルや、気にしないディレクトリを回避します。また、ページャーを自動的に使用し、出力に色を付けます。