私は bash を初めて使用し、ファイルを検索するために独自の grep エイリアスを作成しようとしています。作成したスクリプトは次のとおりです。
function gia() {
if [ -z "$1" ]; then
echo "-You need to define what are you looking for-"
else
echo "-Looking for \"$1\".-"
if [ -z $2 ]; then
echo "-no path passed, searching all files-"
grep -i --color "$1" ./*
else
echo "-Looking in \"$2\".-"
grep -i --color "$1" $2
fi
fi
}
2番目のオプションはうまく機能しません。試してみると、次の出力が得られます。
$$ gia 'sometext' ./*.html
-Looking for "sometext".-
-Looking in "./login.html".-
login.htmlを指定したことはありませんが、ディレクトリ内のファイルの 1 つを取得して検索しました。そしてgrepは失敗します。
たとえば、myfilesディレクトリに 3 つのファイルがある場合:
1.html、2.txtおよび3.html
3.htmlには「バッククォート」というテキストがあります
このように検索すると:
cd myfiles
gia 'backquotes'
私は結果を得る
-Looking for "backquotes".-
-no path passed, searching all files-
./3.html: <backquotes>...</backquotes>
しかし、私がルートにいて、次のように検索した場合:
gia 'backquotes' ~/myfiles/*.html
私はこれを得る:
-Looking for "backquotes".-
-Looking in "./1.html".-
1.html のみを検索したため、結果は返されませんでした。1.html に「逆引用符」があるとします。戻ってきますが、他のファイルからは何も得られません。最初のファイルを検索して終了するだけです。
星がbashの特殊文字であることは知っていますが、どうすればこれを解決できますか?
事前にご協力いただきありがとうございます。
EMMNS