Як я можу створити функцію в 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.