Come posso creare una funzione in zsh che chiama un comando esistente con lo stesso nome?


9

Come posso scrivere una funzione zshche invoca un comando esistente con lo stesso nome della funzione stessa? Ad esempio, ho provato questo per illustrare la mia domanda:

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

Quando lo eseguo con ls *ottengo quanto segue:

ls:1: maximum nested function level reached

Suppongo che ciò avvenga perché la funzione viene chiamata in modo ricorsivo. Come posso evitarlo?

Questo è un esempio approssimativo, e in questo caso un alias farebbe il lavoro, ma ho un esempio più complesso in cui un alias non è adatto e quindi dovrei scrivere una funzione.

Risposte:


25

Quello che sta succedendo è che stai chiamando ricorsivamente la tua lsfunzione. Per usare il binario, puoi usare il commandbuilt-in di ZSH .

function ls {
    command ls -l "$@"
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.