Saya perlu cara untuk membuat daftar nama (tanpa isi / isi / nilai) dari alias, fungsi, variabel, array di zsh. Secara optimal seharusnya berperilaku seperti 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.
Latar Belakang
Saya membutuhkan ini untuk mengembangkan env_parallel.zsh: https://www.gnu.org/software/parallel/env_parallel.html
${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}
(denganextendedglob
) hanya parameter yang variabel.for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done
(extendedglob
perlu diatur) harus memberi Anda daftar pendek variabel untuk digunakan tergantung pada data apa yang Anda cari. Mengubah[[:alpha:]]
ke[[:alpha:]_]
akan menyertakan array asosiatif (atau variabel) yang dimulai dengan garis bawah. Mengubahassociation*
kescalar*
atauarray*
atauinteger*
atau*export*
akan memberikan hasil tipe tersebut. "Variabel dan array" membutuhkan lebih banyak pekerjaan.