我运行以下命令来搜索文件中的文本并显示漂亮的输出:
$ grep -rnI "SEARCHTERM" . | sed 's/\:\s\+/\:\n/g'
./path/filename.php:LINENUMBER:
This line contains SEARCHTERM
但是当我尝试将其作为别名运行时,我收到错误:
$ alias lookfor="grep -rnI '\\!^' . | sed 's/\:\s\+/\:\n/g'"
$ lookfor SEARCHTERM
sed: can't read SEARCHTERM: No such file or directory
为什么我的别名失败了?我确定这是某种引用问题...
答案 0 :(得分:2)
Bash(恼人地,恕我直言)不支持别名的参数。相反,我建议将你想要的东西写成一个函数(它更强大):
lookfor() {
grep -rnI '\\!^' "$@" | sed 's/\:\s\+/\:\n/g'
}
从长远来看,功能总体上更好......如果你愿意的话,它们会让你扩展它以进行错误处理等。
答案 1 :(得分:0)
我最终创建了一个~/bin folder
,并在其中放置了一个名为lookfor
的可执行文件,其中包含以下内容:
#!/bin/sh
grep -rnI "$1" . | sed 's/\:\s\+/\:\n/g'
我的发行版已经确认~/bin
文件夹在PATH中,但是对于那些没有自动设置的文件夹,您可以将以下内容添加到您的PATH中{{1} }}:
~/.bashrc