ZSH Cull Old Aliases

1

Quando eu chamo aliasum shell zsh, recebo uma lista de aliases. Alguns deles são desejados, outros não. Originalmente, criei um .aliasarquivo no meu diretório pessoal e o adicionei source $HOME/.aliasao meu .zshrc. Como seleciono qualquer alias existente que não faz parte do arquivo que está sendo originado pelo meu .zshrc? (Presumivelmente, eu poderia fazer isso um por um unalias, mas isso parece incrivelmente complicado.)

b_archer
fonte

Respostas:

1

unalias suporta a definição de vários aliases ao mesmo tempo, para que você não precise fazer isso um por um, necessariamente.

Eu sugeriria apenas remover todos os aliases e recarregá-los novamente ~/.alias.

unalias ${(k)aliases} ${(k)galiases} ${(k)saliases}; source 

Isso requer que o zsh/parametermódulo seja carregado. Verifique com zmodload | grep parameter, carregue com zmodload zsh/parameter.

Os parâmetros aliases, galiasese saliasesmapear os nomes dos regulares aliases, globais e sufixo, respectivamente, para suas expansões. ${(k)parameter}é substituído pelas teclas de parameter.


Se você não puder carregar o módulo por algum motivo, poderá contorná-lo usando a saída do aliascomando:

unalias $(alias | cut -d = -f 1) ; source ~/.alias

Se você deseja desabilitar apenas um tipo específico de alias, use alias -rpara aliases regulares (aqueles usados ​​em vez de comandos), alias -gpara aliases globais e aliases alias -sde sufixo.


Se você precisar fazer isso com mais frequência, basta definir uma função no seu ~/.zshrc(ou em algum outro arquivo que você extrair a partir daí)

reload-aliases () {
    unalias ${(k)aliases}
    source ~/.alias
}
Adaephon
fonte
Impressionante; era exatamente disso que eu precisava. Só tive que recarregar o zsh . ~/.zshrc, e o problema foi resolvido. Gostaria de votar, mas minha reputação não é alta o suficiente.
b_archer
11
Uma maneira muito mais zsh'ish de remover todos os aliases é:, unalias ${(k)aliases}que não precisa de um comando externo.
precisa
@mpy Obrigado pela informação sobre o aliasesparâmetro. Eu o incorporei na minha resposta.
Adaephon