Как я могу создать функцию в Zsh, которая вызывает существующую команду с тем же именем?

9

Как я могу написать функцию, zshкоторая вызывает существующую команду с тем же именем, что и сама функция? Например, я попробовал это, чтобы проиллюстрировать мой вопрос:

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

Когда я выполню это с, ls *я получаю следующее:

ls:1: maximum nested function level reached

Я предполагаю, что это потому, что функция вызывается рекурсивно. Как я могу избежать этого?

Это грубый пример, и в этом случае псевдоним сделает эту работу, но у меня есть более сложный пример, где псевдоним не подходит, и поэтому мне нужно написать функцию.

Эндрю Ферье
источник

Ответы:

25

Происходит то, что вы рекурсивно вызываете свою lsфункцию. Чтобы использовать двоичный файл, вы можете использовать commandвстроенную функцию ZSH.

function ls {
    command ls -l "$@"
}
jordanm
источник