Dowolny sposób uzyskania listy funkcji zdefiniowanych w zsh (jak polecenie aliasu dla aliasów)

19

mogę pisać

alias

i uzyskaj listę zdefiniowanych aliasów w zsh

Jak mogę uzyskać listę nazw funkcji zdefiniowanych w Zsh?

Kiedy piszę „funkcje”, okno powłoki zawiesza się po wyświetleniu wielu funkcji, zawsze kończąc na

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

Bardzo denerwujące jest to, że nie kończy się to przy pomocy ctrl-c (przy użyciu terminala item2 AND).

iterm2: wprowadź opis zdjęcia tutaj

Zdjęcie terminala mającego ten sam problem: wprowadź opis zdjęcia tutaj

justingordon
źródło
Zazwyczaj aukcja jest zrobione z functionswbudowanego polecenia. Nie masz wyjścia, jeśli undefine funkcję problematyczny pierwszy (?): unfunction __rvm_checksum_read?
mpy
Co jeśli chcę uzyskać listę funkcji (nie pełne deklaracje)? Jeśli przestanę tę metodę, inne __rvm_curl również ma problemy.
justingordon
Zobacz moją odpowiedź. Ale zachowanie, które opisujesz, brzmi dziwnie ... więc nie interesuje: Czy pełna lista działa z innym emulatorem terminala? Czy potrafisz skutecznie wykorzystać problematyczne funkcje?
mpy
terminal ma taki sam problem jak w punkcie 2. Odpowiedź poniżej jest NIESAMOWITA. Chociaż chciałbym wiedzieć, dlaczego terminal zawiesza się po prostu za pomocą polecenia „funkcje” (nawet gdy jest przesyłany do mniejszej liczby), czy to ma znaczenie? Z jakichś powodów spowoduje to problemy?
justingordon
Podejrzewałem, że w tych funkcjach są naprawdę dziwne sekwencje znaków, które psują terminal. Aby to zawęzić, możesz przekierować dane wyjściowe do pliku functions > /tmp/foo. Jeśli jest to problem zsh, to też powinien być problem. Kiedy jest to problem terminalny, nie powinien. Jeśli twój problem może zakłócać codzienne użytkowanie - nie mogę powiedzieć przepraszam.
mpy

Odpowiedzi:

19

Oszukując, patrząc na funkcję _functionsukończenia, jestem w stanie odpowiedzieć na twoje pytanie:

Funkcje są przechowywane w tablicy asocjacyjnej functions, więc aby uzyskać tylko nazwy funkcji ( kflaga dla kluczy ) w kolejności alfabetycznej ( oflaga dla porządku ), można użyć

print -l ${(ok)functions}
mpy
źródło