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ę.

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 "$@"
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.