别名 grep "$1" 文件名不起作用,不知何故 "$1" 不见了

Wol*_*olf -1 alias

普通的 grep

wolf@linux:~$ egrep 4.4.4.4 data.csv 
A,4.4.4.4,4.4.4.5,4.4.4.6,3.3.3.3,3.3.3.4
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

因为我有很多数据要 grep,所以我把它放在别名上。

wolf@linux:~$ alias z="egrep $1 data.csv"
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

但它不起作用

wolf@linux:~$ z 4.4.4.4
grep: 4.4.4.4: No such file or directory
wolf@linux:~$ 
Run Code Online (Sandbox Code Playgroud)

事实证明,$1别名中缺少这一点。

wolf@linux:~$ alias z
alias z='egrep  data.csv'
wolf@linux:~$
Run Code Online (Sandbox Code Playgroud)

这背后的原因是什么?

小智 5

尝试一个函数而不是别名

z() { egrep -- "$1" data.csv; }
Run Code Online (Sandbox Code Playgroud)

输出

$ z() { egrep -- "$1" data.csv; }
$ z 3.3.3.3
A,4.4.4.4,4.4.4.5,4.4.4.6,3.3.3.3,3.3.3.4
B,1.1.1.1,1.1.1.1,1.1.1.2,1.1.1.3,3.3.3.3
$ 
Run Code Online (Sandbox Code Playgroud)