Jak mogę utworzyć funkcję w Zsh, która wywołuje istniejące polecenie o tej samej nazwie?

9

Jak napisać funkcję, zshktóra wywołuje istniejące polecenie o tej samej nazwie co sama funkcja? Próbowałem na przykład zilustrować moje pytanie:

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

Kiedy go wykonuję, ls *otrzymuję:

ls:1: maximum nested function level reached

Zakładam, że dzieje się tak, ponieważ funkcja jest wywoływana rekurencyjnie. Jak mogę tego uniknąć?

Jest to prosty przykład, w tym przypadku alias wykonałby zadanie, ale mam bardziej złożony przykład, w którym alias nie jest odpowiedni, więc musiałbym napisać funkcję.

Andrew Ferrier
źródło

Odpowiedzi:

25

Dzieje się tak, że rekurencyjnie wywołujesz swoją lsfunkcję. Aby użyć pliku binarnego, możesz użyć commandwbudowanego ZSH .

function ls {
    command ls -l "$@"
}
Jordan
źródło