为什么我在别名中从 grep 得到“无效的最大计数”?

为什么我在别名中从 grep 得到“无效的最大计数”?

所以我们的想法是创建一个别名来为我搜索我的别名。我有不少。

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 的建议),您的问题应该得到解决。

但;在像您这样的情况下,您的别名中不仅有同义词或缩写,而且还有带管道的功能代码,最好定义一个函数而不是别名。

相关内容