我不明白为什么使用别名会提示错误,但使用没有别名的相同语法不会......
alias grep='egrep -iIs '
19:47:24 ~
cat /etc/services | \grep ssh
ssh 22/tcp # SSH Remote Login Protocol
19:47:26 ~
cat /etc/services | grep ssh
grep: option requires an argument -- 'X'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
19:47:33 ~
cat /etc/services | egrep -iIs ssh
ssh 22/tcp # SSH Remote Login Protocol
Run Code Online (Sandbox Code Playgroud)
你能解释一下吗?
ste*_*ver 10
如ALIASES
部分所述man bash
如果别名值的最后一个字符是空白,则还检查别名之后的下一个命令字的别名扩展。
由于您已经grep
使用这样一个空白的最后一个字符定义了别名,shell 还将扩展您为其定义的任何别名ssh
-alias ssh='ssh -X'
例如,如果是这样,那么命令将变为
cat /etc/services | egrep -iIs ssh -X
Run Code Online (Sandbox Code Playgroud)
它将-X
作为附加参数传递给egrep
.
除非有特殊原因需要包含尾随空白,否则只需定义没有它的别名,即
alias grep='egrep -iIs'
Run Code Online (Sandbox Code Playgroud)