Como posso criar uma função no zsh que chama um comando existente com o mesmo nome?

9

Como posso escrever uma função zshque chama um comando existente com o mesmo nome que a própria função? Por exemplo, eu tentei isso para ilustrar minha pergunta:

function ls 
{
    ls -l $1 $2 $3
}

Ao executá-lo ls *, recebo o seguinte:

ls:1: maximum nested function level reached

Suponho que isso ocorre porque a função está sendo chamada recursivamente. Como posso evitar isso?

Este é um exemplo grosseiro e, nesse caso, um alias faria o trabalho, mas eu tenho um exemplo mais complexo em que um alias não é adequado e, portanto, eu precisaria escrever uma função.

Andrew Ferrier
fonte

Respostas:

25

O que está acontecendo é que você está chamando recursivamente sua lsfunção. Para usar o binário, você pode usar o ZSH commandembutido.

function ls {
    command ls -l "$@"
}
jordanm
fonte