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.

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 "$@"
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.