Как я могу создать функцию в 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 "$@"
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.