我有这个别名:
alias gi='grep -r -i $1 ./*'
当我做的时候
gi someString
它执行grep,但是在我提供的其他字符串上,通常带有“p /或其他类似的东西。
我正在使用类似的东西来追踪历史:
alias gh='history | grep $1'
完美无缺。
编辑:我在/ bin / bash shell上,按照echo $ SHELL。
谢谢!
答案 0 :(得分:2)
alias
机制仅仅取代了一个词。同一行上的任何其他单词都保留在原位,因此通常只需替换命令并保留参数即可。这对您的 grep 示例效果不佳,因为您想要重新排列该行。
现在,$1
将引用shell进程(或shell函数)参数,在任何一种情况下, not 指向在同一行上键入的单词。
在这种情况下,使用shell 函数可以更好地服务,它应该适用于任何包含bash的Posix shell。
gi () {
grep -r -i "$1" ./*
}
答案 1 :(得分:1)
您无法将参数传递给alias
,有关详细信息,请参阅this post。你需要的是一个功能。尝试一下就行:
function gi() {
grep -r -i "$1" ./*
}
希望这有帮助!
P.S。:至于为什么alias gh='history | grep $1'
有效是因为它与alias gh='history | grep
相同。静态设置$1
时会展开alias
。
答案 2 :(得分:0)
试试这个别名:
alias gi='find . | xargs grep -i'
如果您仍然只想使用别名来解决问题,这将有效。