ZSH Cull Old Aliases

1

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

    
por b_archer 13.08.2014 / 06:05

1 resposta

1

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

Eu sugiro apenas eliminar todos os aliases e recarregá-los novamente a partir de ~/.alias .

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

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

Os parâmetros aliases , galiases e saliases mapeiam os nomes dos aliases regular, global e de sufixo, respectivamente, para suas expansões. ${(k)parameter} é substituído pelas chaves de parameter .

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

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

Se você deseja desabilitar um tipo específico de alias, use alias -r para aliases regulares (aqueles usados em vez de comandos), alias -g para aliases globais e alias -s para aliases de sufixo.

Se você precisar fazer isso com mais frequência, apenas defina uma função no seu ~/.zshrc (ou algum outro arquivo que você fonte de lá)

reload-aliases () {
    unalias ${(k)aliases}
    source ~/.alias
}
    
por 13.08.2014 / 07:41