รายการชื่อของสมนามฟังก์ชันและตัวแปรใน zsh


11

ฉันต้องการวิธีที่จะแสดงชื่อ (โดยไม่มีเนื้อหา / เนื้อหา / ค่า) ของนามแฝง, ฟังก์ชั่น, ตัวแปร, อาร์เรย์ใน zsh มันควรมีพฤติกรรมที่เหมาะสมเช่น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.

พื้นหลัง

ฉันต้องการสิ่งนี้เพื่อพัฒนา env_parallel.zsh: https://www.gnu.org/software/parallel/env_parallel.html

คำตอบ:


18

นามแฝงและฟังก์ชั่นมีอยู่ในaliasesและfunctionsและหนึ่งก็ต้องพิมพ์คีย์ของเช่น "ตัวแปรและอาร์เรย์" เป็นเล่ห์เหลี่ยม; parametersอาจพอเพียง?

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

(คุณยังอาจต้องbuiltins, commandsและสิ่งอื่น ๆ อาจจะจดทะเบียนprint -l ${(k)แล้ว mashing tabสมมติว่าเสร็จสิ้นการเปิดใช้งาน.)


1
บางที${(kM)parameters:#[[:alpha:]_][[:alnum:]_]#}(กับextendedglob) สำหรับเพียงพารามิเตอร์ที่เป็นตัวแปร
Stéphane Chazelas

for k in ${(koM)parameters:#[[:alpha:]][[:alnum:]_]#}; do; [[ ${(M)parameters[$k]:#association*} ]] || continue; print -- "$k"; done( extendedglobจำเป็นต้องตั้งค่า) ควรให้รายการตัวแปรสั้น ๆ แก่คุณใช้โดยขึ้นอยู่กับข้อมูลที่คุณกำลังค้นหา การเปลี่ยน[[:alpha:]]เป็น[[:alpha:]_]จะรวมอาเรย์แบบเชื่อมโยง (หรือตัวแปร) ซึ่งเริ่มต้นด้วยเครื่องหมายขีดล่าง การเปลี่ยนassociation*เป็นscalar*หรือarray*หรือinteger*หรือ*export*จะให้ผลลัพธ์ของประเภทเหล่านั้นแก่คุณ "ตัวแปรและอาร์เรย์" ใช้เวลาเพิ่มขึ้นเล็กน้อย
Friartek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.