![为什么我在别名中从 grep 得到“无效的最大计数”?](https://linux22.com/image/62883/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%9C%A8%E5%88%AB%E5%90%8D%E4%B8%AD%E4%BB%8E%20grep%20%E5%BE%97%E5%88%B0%E2%80%9C%E6%97%A0%E6%95%88%E7%9A%84%E6%9C%80%E5%A4%A7%E8%AE%A1%E6%95%B0%E2%80%9D%EF%BC%9F.png)
所以我们的想法是创建一个别名来为我搜索我的别名。我有不少。
dude@gnarleybox:~$ grep alg .bash_aliases.sh
alias alg='alias | grep '
dude@gnarleybox:~$ alias | grep alg
alias alg='alias | grep '
dude@gnarleybox:~$ alg gd
grep: invalid max count
dude@gnarleybox:~$
啊?就像 grep 得到两个参数一样?这怎么可能?请注意,我也尝试过末尾没有空格:
alias alg='alias | grep'
您应该只能输入:
alg gd
...并获取我用来熔断安装 GoogleDocs 的别名。
答案1
它看起来gd
也是一个别名,并且扩展为-m
和 。为了显示:
$ alias alg='alias | grep '
$ alias gd='-m foo'
$ alg gd
grep: invalid max count
您显示的错误消息是给定(最大计数)选项和非数字参数grep
时打印的内容。-m
如果你运行alias | grep gd
,我打赌你会看到它与我上面显示的内容相匹配。
正如中所解释的man bash
:
如果别名值的最后一个字符是空格或制表符,则还会检查别名后面的下一个命令字是否有别名扩展。
因此,从别名中删除空格alg
也应该修复它。
另外,你确定有人~/.bash_aliases.sh
在读吗?这默认文件名是~/.bash_aliases
没有扩展名的。除非您明确采购,否则~/.bash_aliases.sh
它将被忽略。
答案2
删除别名定义末尾的空白(按照 rici 的建议),您的问题应该得到解决。
但;在像您这样的情况下,您的别名中不仅有同义词或缩写,而且还有带管道的功能代码,最好定义一个函数而不是别名。