我是 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
}
第二个选项效果不佳,如果我尝试一下,我会得到以下输出:
$$ gia 'sometext' ./*.html
-Looking for "sometext".-
-Looking in "./login.html".-
我从未指定login.html,但它获取了我目录中的一个文件并在其中进行了搜索。并且 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>
但是如果我是root用户,然后像这样搜索:
gia 'backquotes' ~/myfiles/*.html
我明白了:
-Looking for "backquotes".-
-Looking in "./1.html".-
没有结果返回,因为它只在 1.html 中搜索。如果我在 1.html 中有“反引号”。它会回来,但我没有从其他文件中得到任何东西,它只是在第一个文件中搜索并退出。
我知道星号是 bash 中的一个特殊字符,但我该如何解决呢?
提前感谢您的帮助。
EMMNS