A saída do alias são linhas que começam com alias
. Então, seu alias deve ser:
alias ggg='alias | grep "^alias g"'
Eu quero um alias ('ggg') que procure no meu conjunto existente de aliases e diga-me todos os que começam com g. Eu tenho muitos g * aliases:)
Eu tentei isso: alias ggg='alias | grep ^g'
mas não me deu nenhuma saída (ou erro). A coisa que eu tenho mais certeza é o caractere de 'início da linha'.
Em zsh,
alias ggg='alias -m "g*"'
Ou use uma função, para que ggg
não seja impresso:
ggg() alias -m 'g*'
Você também pode grep a saída de "alias", mas pode não funcionar corretamente se houver alguns aliases de várias linhas.
Com o bash, você pode usar esse truque:
(
alias() { [[ $1 = g* ]] && builtin alias "${1%%=*}"; }
eval "$(builtin alias)"
)
A ideia é que alias
do bash produz algum texto que está pronto para ser interpretado para reproduzir os mesmos aliases, algo como:
$ alias
alias a='foo'
alias goo='gar
baz
alias gro=grar'
Portanto, nós o avaliamos, mas depois de ter redefinido alias
como uma função que chama o alias
real somente quando passamos uma string que começa com "g".
Depende do seu shell, se você estiver usando o bash, @Dennis está completamente certo, pois zsh
pode ser outro problema se você ativou EXTENDED_GLOB
. Nesse caso, o ^
é interpretado pelo shell e você tem para citá-lo, ou seja:
alias ggg='alias | grep "^g"'