ZSH elimina apelidos antigos

ZSH elimina apelidos antigos

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

Responder1

unaliassuporta a desativação de vários aliases ao mesmo tempo, portanto você não precisa fazer isso necessariamente um por um.

Eu sugeriria apenas descartar todos os aliases e recarregá-los novamente em ~/.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 aliasese mapeiam os nomes de aliases regulares, globais e de sufixo, respectivamente, para suas expansões galiases. é substituído pelas chaves de .saliases${(k)parameter}parameter


Se você não conseguir carregar o módulo por algum motivo, poderá contornar isso usando a saída do aliascomando:

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

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


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

reload-aliases () {
    unalias ${(k)aliases}
    source ~/.alias
}

informação relacionada