Ich brauche eine Möglichkeit, die Namen (ohne den Textkörper / Inhalt / Wert) von Aliasen, Funktionen, Variablen und Arrays in zsh aufzulisten. Optimal sollte es sich so verhalten 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.
Hintergrund
Ich benötige dies, um env_parallel.zsh zu entwickeln: https://www.gnu.org/software/parallel/env_parallel.html
${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}
(mitextendedglob
) nur für die Parameter, die Variablen sind.for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done
(extendedglob
muss festgelegt werden) sollte Ihnen eine kurze Liste von Variablen geben, die Sie verwenden können, je nachdem, nach welchen Daten Sie suchen. Das Ändern[[:alpha:]]
in[[:alpha:]_]
enthält assoziative Arrays (oder Variablen), die mit einem Unterstrich beginnen. Wenn Sieassociation*
zuscalar*
oderarray*
oderinteger*
oder wechseln*export*
, erhalten Sie die Ergebnisse dieser Typen. "Variablen und Arrays" erfordern etwas mehr Arbeit.