Daftar nama alias, fungsi dan variabel di zsh


11

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

Jawaban:


18

Alias ​​dan fungsi terkandung dalam aliasesdan functions, dan orang hanya perlu mencetak kunci tersebut. "Variabel dan array" lebih rumit; parametersmungkin cukup?

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

(Anda mungkin juga perlu builtins,, commandsdan mungkin hal-hal lain yang didaftar dari print -l ${(k)dan kemudian dihancurkan tab, dengan asumsi penyelesaian diaktifkan.)


1
Mungkin ${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}(dengan extendedglob) hanya parameter yang variabel.
— Stéphane Chazelas

for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done( extendedglobperlu 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. Mengubah association*ke scalar*atau array*atau integer*atau *export*akan memberikan hasil tipe tersebut. "Variabel dan array" membutuhkan lebih banyak pekerjaan.
— Friartek
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.