Potrzebuję sposobu, aby wyświetlić listę nazw (bez treści / treści / wartości) aliasów, funkcji, zmiennych, tablic w Zsh. Optymalnie powinien zachowywać się jak 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.
tło
Potrzebuję tego, aby rozwinąć env_parallel.zsh: https://www.gnu.org/software/parallel/env_parallel.html
${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}
(zextendedglob
) tylko dla parametrów, które są zmiennymi.for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done
(extendedglob
należy ustawić) powinien dać ci krótką listę zmiennych do użycia w zależności od tego, jakich danych szukasz. Zmiana[[:alpha:]]
na[[:alpha:]_]
będzie obejmować tablice asocjacyjne (lub zmienne), które zaczynają się od znaku podkreślenia. Zmianaassociation*
nascalar*
lubarray*
lubinteger*
lub*export*
da wyniki tego typu. „Zmienne i tablice” wymagają nieco więcej pracy.