Comment puis-je créer une fonction dans zsh qui appelle une commande existante avec le même nom?

9

Comment puis-je écrire une fonction zshqui invoque une commande existante portant le même nom que la fonction elle-même? Par exemple, j'ai essayé ceci pour illustrer ma question:

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

Lorsque je l'exécute avec, ls *j'obtiens ce qui suit:

ls:1: maximum nested function level reached

Je suppose que c'est parce que la fonction est appelée récursivement. Comment puis-je éviter cela?

Ceci est un exemple grossier, et dans ce cas, un alias ferait le travail, mais j'ai un exemple plus complexe où un alias ne convient pas et j'ai donc besoin d'écrire une fonction.

Andrew Ferrier
la source

Réponses:

25

Ce qui se passe, c'est que vous appelez récursivement votre lsfonction. Pour utiliser le binaire, vous pouvez utiliser la fonction intégrée de commandZSH.

function ls {
    command ls -l "$@"
}
jordanm
la source