Beliebige Möglichkeit, eine Liste der in zsh definierten Funktionen abzurufen (wie der Alias-Befehl für Aliase)

18

ich kann tippen

alias

und erhalte eine Liste der definierten Aliase in zsh

Wie kann ich eine Liste der in zsh definierten Funktionsnamen erhalten?

Wenn ich "functions" eingebe, bleibt mein Shell-Fenster nach der Anzeige vieler Funktionen hängen und endet immer bei

__rvm_checksum_none () {
    [[ -z "${_checksum_md5:-}" && -z "${_checksum_sha512:-}" ]]
}
__rvm_checksum_read () {

Was sehr ärgerlich ist, ist, dass dies mit Strg-C nicht beendet wird (unter Verwendung von Item2 und Terminal).

iterm2: Bildbeschreibung hier eingeben

Abbildung des Terminals mit demselben Problem: Bildbeschreibung hier eingeben

justingordon
quelle
Normalerweise ist die Liste wird mit dem getan functionsbuiltin. Erhalten Sie eine Ausgabe, wenn Sie zuerst die problematische (?) Funktion aufheben unfunction __rvm_checksum_read:?
mpy
Was ist, wenn ich die Funktionsliste erhalten möchte (keine vollständigen Deklarationen)? Wenn ich diese Methode deaktiviere, gibt es auch bei einem anderen __rvm_curl Probleme.
Justingordon
Siehe meine Antwort. Aber das Verhalten, das Sie beschreiben, klingt seltsam ... also nur aus Interesse: Funktioniert die vollständige Auflistung mit einem anderen Terminal-Emulator? Können Sie die problematischen Funktionen erfolgreich nutzen?
mpy
Terminal hat das gleiche Problem wie Punkt 2. Die Antwort unten ist super. Ich möchte zwar wissen, warum das Terminal nur mit dem Befehl 'functions' hängt (auch wenn es an weniger weitergeleitet wird), spielt es jedoch eine Rolle? Gibt es einen Grund, warum dies Probleme verursachen wird?
Justingordon
Ich nahm an, dass diese Funktionen einige wirklich seltsame Zeichenfolgen enthalten, die das Terminal durcheinander bringen. Um dies einzugrenzen, können Sie die Ausgabe in eine Datei umleiten functions > /tmp/foo. Wenn es sich um ein zsh-Problem handelt, sollte dies ebenfalls ein Problem sein. Wenn es ein Terminalproblem ist, sollte es nicht sein. Ob Ihr Problem den täglichen Gebrauch beeinträchtigen könnte, kann ich leider nicht sagen.
mpy

Antworten:

19

Mit Betrug durch einen Blick auf die _functionsVervollständigungsfunktion kann ich Ihre Frage beantworten:

Die Funktionen sind in einem assoziativen Array gespeichert functions, sodass nur die Funktionsnamen ( kFlag für Tasten ) in alphabetischer Reihenfolge ( oFlag für Reihenfolge ) angezeigt werden, die Sie verwenden können

print -l ${(ok)functions}
mpy
quelle