Uma solução para usuários zsh
No bash e no zsh, finalizar um alias com um espaço fará com que o shell aliasse a próxima palavra. Isso permite algo como o seguinte para alias expandir myalias
alias 'sudo=sudo '
sudo myalias
Infelizmente, isso desmorona quando você tem mais de uma palavra em seu alias (como sudo -u someone
. No entanto, você pode abusar do recurso zsh "aliases globais" para expandir manualmente os aliases em qualquer lugar do comando.
alias -g '$= '
Isso cria um alias global chamado $
(você pode usar qualquer palavra que quiser) que termina em um espaço. Isso faz com que o zsh expanda a próxima palavra como um alias de comando regular. Como o alias se expande para espaços em branco, ele não será tratado como um argumento. Isso permite que o seguinte funcione.
% alias myalias=echo
% sudo -u someone myalias foo
sudo: myalias: command not found
% sudo -u someone $ myalias foo
foo
Você pode até usar $
várias vezes em uma linha de comando se tiver um aninhamento de comando complicado. Eu achei isso útil o suficiente para que ele tenha um lugar permanente no meu zshrc, entretanto o alias é simples o suficiente para definir quando você precisa usá-lo.