Qualsiasi modo per ottenere un elenco di funzioni definite in zsh (come il comando alias per gli alias)


18

posso scrivere

alias

e ottenere un elenco di alias definiti in zsh

Come posso ottenere un elenco di nomi di funzioni definiti in zsh?

Quando scrivo "funzioni", la finestra della shell si blocca dopo aver visualizzato molte funzioni, finendo sempre con

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

La cosa super fastidiosa è che questo non si chiuderà con ctrl-c (usando il terminale item2 AND).

iterm2: inserisci qui la descrizione dell'immagine

Immagine del terminale con lo stesso problema: inserisci qui la descrizione dell'immagine


Di solito l'elenco è fatto con il functionsbuiltin. Non si ottiene un output se si undefine la funzione problematica prima (?): unfunction __rvm_checksum_read?
mpy,

Cosa succede se desidero ottenere l'elenco delle funzioni (non dichiarazioni complete)? Se sbaglio quel metodo, anche un altro __rvm_curl ha dei problemi.
justingordon,

Vedi la mia risposta Ma il comportamento che descrivi suona strano ... quindi solo per interesse: l'elenco completo funziona con un altro emulatore di terminale? Potete usare con successo le funzioni problematiche?
mpy,

il terminale ha lo stesso problema del punto 2. La risposta qui sotto è FANTASTICA. Anche se mi piacerebbe sapere perché il terminale si blocca semplicemente usando il comando 'funzioni' (anche se indirizzato a meno), importa? Qualche motivo che causerà problemi?
justingordon,

Suppongo che ci siano alcune sequenze di caratteri davvero strane in queste funzioni che confondono il terminale. Per restringere il campo, puoi reindirizzare l'output su un file functions > /tmp/foo. Se è un problema di zsh, anche questo dovrebbe avere problemi. Quando è un problema terminale non dovrebbe. Se il tuo problema può interferire con l'uso quotidiano, non potrei dire, scusa.
mpy,

Risposte:


19

Con i trucchi guardando la _functionsfunzione di completamento, sono in grado di rispondere alla tua domanda:

Le funzioni sono memorizzate in un array associativo functions, quindi per ottenere solo i nomi delle funzioni ( kflag per i tasti ) in ordine alfabetico ( oflag per l' ordinamento ) è possibile utilizzare

print -l ${(ok)functions}
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.