如何为grep -R写一个别名?

num*_*dix 14 bash grep

我最后打字了

grep -Rni pattern .
Run Code Online (Sandbox Code Playgroud)

太可怕了 如何将其变为别名

alias gr='grep -Rni $@ .'
Run Code Online (Sandbox Code Playgroud)

运行时给出:

$ gr pattern
grep: pattern: No such file or directory
Run Code Online (Sandbox Code Playgroud)

即使别名看起来很好:

$ type gr
gr is aliased to `grep -R $@ .'
Run Code Online (Sandbox Code Playgroud)

好像是$ @和.在实际执行时进行交换.

Pau*_*ce. 22

试试这个:

$ alias gr='grep -Rnif /dev/stdin . <<<'
$ gr pattern
./path/file:42:    here is the pattern you were looking for
Run Code Online (Sandbox Code Playgroud)

这也有效:

$ alias gr='grep -Rnif - . <<<'
Run Code Online (Sandbox Code Playgroud)

  • @EricHu:连字符.在第一个版本中,`/ dev/stdin`用于相同的目的.圆点代表当前目录.`<<<`是here-string运算符,它使得右边的参数看起来好像是文件的内容. (2认同)

gho*_*g74 5

创建一个函数而不是别名.将其保存在文件中,例如mylibrary.sh,无论何时您想使用该功能,都要获取文件

例如mylibrary.sh

myfunction(){
 grep -Rni ...
}

#!/bin/bash
source mylibrary.sh
myfunction 
Run Code Online (Sandbox Code Playgroud)