我想要一个别名(“ggg”),它将查看我现有的一组别名并告诉我所有别名首先G。我有很多 g* 别名:)
我尝试了这个:alias ggg='alias | grep ^g'
但没有给我任何输出(或错误)。我最不确定的是“行首”字符。
答案1
在 zsh 中,
alias ggg='alias -m "g*"'
或者使用一个函数,这样ggg
就不会打印自身:
ggg() alias -m 'g*'
您还可以 grep “alias”的输出,但如果存在一些多行别名,它可能无法正常工作。
对于 bash,你可以使用这个技巧:
(
alias() { [[ $1 = g* ]] && builtin alias "${1%%=*}"; }
eval "$(builtin alias)"
)
这个想法是 bashalias
输出一些文本,这些文本可以被解释以重现相同的别名,例如:
$ alias
alias a='foo'
alias goo='gar
baz
alias gro=grar'
因此,我们确实对其进行了评估,但在重新定义为仅在传递以“g”开头的字符串时才alias
调用实数的函数之后。alias
答案2
alias 的输出是以 开头的行alias
。所以你的别名应该是:
alias ggg='alias | grep "^alias g"'
答案3
这取决于你的 shell,如果你使用 bash @Dennis 是完全正确的,因为zsh
如果你启用了,这可能是另一个问题,EXTENDED_GLOB
在这种情况下^
shell 会解释它,你必须引用它,即:
alias ggg='alias | grep "^g"'