Eu preciso de uma maneira de listar os nomes (sem o corpo / conteúdo / valor) de aliases, funções, variáveis e matrizes no zsh. Idealmente, ele deve se comportar como 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.
fundo
Eu preciso disso para desenvolver env_parallel.zsh: https://www.gnu.org/software/parallel/env_parallel.html
${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}
(comextendedglob
) apenas para os parâmetros que são variáveis.for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done
(extendedglob
precisa ser definido) deve fornecer uma lista curta de variáveis a serem usadas, dependendo dos dados que você está procurando. Alterar[[:alpha:]]
para[[:alpha:]_]
incluirá matrizes associativas (ou variáveis) que começam com um sublinhado. Alterarassociation*
parascalar*
ouarray*
ouinteger*
ou*export*
fornecerá os resultados desses tipos. "Variáveis e matrizes" exigem um pouco mais de trabalho.