J'ai besoin d'un moyen de lister les noms (sans le corps / contenu / valeur) des alias, fonctions, variables, tableaux dans zsh. De manière optimale, il devrait se comporter comme 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.
Contexte
J'en ai besoin pour développer env_parallel.zsh: https://www.gnu.org/software/parallel/env_parallel.html
${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}
(avecextendedglob
) uniquement pour les paramètres qui sont des variables.for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done
(extendedglob
doit être défini) devrait vous donner une courte liste de variables à utiliser en fonction des données que vous recherchez. Le passage[[:alpha:]]
à[[:alpha:]_]
inclura des tableaux associatifs (ou variables) qui commencent par un trait de soulignement. Le passageassociation*
àscalar*
ouarray*
ouinteger*
ou*export*
vous donnera les résultats de ces types. Les "variables et tableaux" demandent un peu plus de travail.