Elenca i nomi di alias, funzioni e variabili in zsh


11

Ho bisogno di un modo per elencare i nomi (senza il corpo / contenuto / valore) di alias, funzioni, variabili, array in zsh. In modo ottimale dovrebbe comportarsi come compgen:

compgen -a # will list all the aliases you could run.
compgen -A function # will list all the functions you could run.
compgen -A variable # will list all the variables defined.

sfondo

Ho bisogno di questo per sviluppare env_parallel.zsh: https://www.gnu.org/software/parallel/env_parallel.html

Risposte:


18

Gli alias e le funzioni sono contenuti in aliasese functions, e si deve semplicemente stampare i tasti di tali. "Variabili e matrici" è più complicato; parameterspuò bastare?

print -rl -- ${(k)aliases} ${(k)functions} ${(k)parameters}

(Potresti anche aver bisogno builtins, commandse forse altre cose elencate da print -l ${(k)e poi mashing tab, supponendo che il completamento sia abilitato.)


1
Forse ${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}(con extendedglob) solo per i parametri che sono variabili.
Stéphane Chazelas,

for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done( extendedglobdeve essere impostato) dovrebbe fornirti un breve elenco di variabili da utilizzare a seconda dei dati che stai cercando. La modifica [[:alpha:]]in [[:alpha:]_]includerà array (o variabili) associativi che iniziano con un trattino basso. Passare association*a scalar*o array*o integer*o *export*ti darà i risultati di questi tipi. "Variabili e matrici" richiedono un po 'più di lavoro.
Friartek,
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.