Diğer adların, işlevlerin ve değişkenlerin adlarını zsh olarak listeleme


11

Takma adlar, işlevler, değişkenler, diziler zsh adlarını (gövde / içerik / değer olmadan) listelemek için bir yol gerekir. Optimal olarak şöyle davranmalıdır 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.

Arka fon

Env_parallel.zsh geliştirmek için buna ihtiyacım var: https://www.gnu.org/software/parallel/env_parallel.html

Yanıtlar:


18

Takma adlar ve işlevler ve içinde bulunur aliasesve functionsyalnızca bunun tuşlarının yazdırılması gerekir. "Değişkenler ve diziler" daha karmaşıktır; parametersyeterli olabilir mi?

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

(Ayrıca gerekebilir builtins, commandsve belki başka şeyler doğru listelenir print -l ${(k)ezme sonra ve tabetkindir tamamlanmasını varsayarak.)


1
Belki sadece değişken olan parametreler için ${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}(ile extendedglob) .
Stéphane Chazelas

for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done( extendedglobayarlanması gerekir), aradığınız verilere bağlı olarak size kısa bir değişken listesi vermelidir. Değiştirilmesi [[:alpha:]]için [[:alpha:]_]bir alt çizgi ile başlar ilişkilendirilebilir diziler (veya değişkenler) içerecektir. Bunu değiştirmek association*veya scalar*veya array*veya integer*veya *export*size bu tür sonuçları verecektir. "Değişkenler ve diziler" biraz daha fazla iş gerektirir.
Friartek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.