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.