Wie kann ich in zsh eine Funktion erstellen, die einen vorhandenen Befehl mit demselben Namen aufruft?


9

Wie kann ich eine Funktion schreiben zsh, die einen vorhandenen Befehl mit demselben Namen wie die Funktion selbst aufruft? Ich habe zum Beispiel versucht, meine Frage zu veranschaulichen:

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

Wenn ich es mit ausführe, ls *erhalte ich Folgendes:

ls:1: maximum nested function level reached

Ich gehe davon aus, dass dies daran liegt, dass die Funktion rekursiv aufgerufen wird. Wie kann ich das vermeiden?

Dies ist ein grobes Beispiel, und in diesem Fall würde ein Alias ​​die Arbeit erledigen, aber ich habe ein komplexeres Beispiel, in dem ein Alias ​​nicht geeignet ist und ich daher eine Funktion schreiben müsste.

Antworten:


25

Was passiert ist, dass Sie Ihre lsFunktion rekursiv aufrufen . Um die Binärdatei zu verwenden, können Sie die integrierte commandZSH verwenden.

function ls {
    command ls -l "$@"
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.