Necesito una forma de enumerar los nombres (sin el cuerpo / contenido / valor) de alias, funciones, variables, matrices en zsh. Óptimamente debería comportarse así 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.
Antecedentes
Necesito esto para desarrollar env_parallel.zsh: https://www.gnu.org/software/parallel/env_parallel.html
${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}
(conextendedglob
) solo para los parámetros que son variables.for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done
(extendedglob
debe establecerse) debería proporcionarle una breve lista de variables para usar según los datos que esté buscando. El cambio[[:alpha:]]
a[[:alpha:]_]
incluirá matrices asociativas (o variables) que comienzan con un guión bajo. Cambiarassociation*
ascalar*
oarray*
ointeger*
o*export*
le dará los resultados de esos tipos. Las "variables y matrices" requieren un poco más de trabajo.