Liste des noms d'alias, de fonctions et de variables dans zsh


11

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

Réponses:


18

Les alias et les fonctions sont contenus dans aliaseset functions, et il suffit d'imprimer les clés de ceux-ci. "Variables et tableaux" est plus délicat; parameterspeut suffire?

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

(Vous pouvez également avoir besoin de builtins, commandset peut-être d'autres éléments répertoriés à partir de print -l ${(k)puis écraser tab, en supposant que l'achèvement est activé.)


1
Peut-être ${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}(avec extendedglob) uniquement pour les paramètres qui sont des variables.
Stéphane Chazelas

for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done( extendedglobdoit ê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 passage association*à scalar*ou array*ou integer*ou *export*vous donnera les résultats de ces types. Les "variables et tableaux" demandent un peu plus de travail.
Friartek
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.