วิธีการรับรายการฟังก์ชันที่กำหนดใน zsh (เช่นคำสั่ง alias สำหรับ alias)


19

ฉันพิมพ์ได้

alias

และรับรายการนามแฝงที่กำหนดใน zsh

ฉันจะรับรายการชื่อฟังก์ชันที่กำหนดใน zsh ได้อย่างไร?

เมื่อฉันพิมพ์ "ฟังก์ชั่น" หน้าต่าง shell ของฉันจะค้างหลังจากแสดงฟังก์ชั่นมากมายโดยจะสิ้นสุดที่

__rvm_checksum_none () {
    [[ -z "${_checksum_md5:-}" && -z "${_checksum_sha512:-}" ]]
}
__rvm_checksum_read () {

สิ่งที่น่ารำคาญอย่างยิ่งคือสิ่งนี้จะไม่เลิกกับ ctrl-c (ใช้ item2 และ terminal)

iterm2: ป้อนคำอธิบายรูปภาพที่นี่

รูปภาพของเทอร์มินัลมีปัญหาเดียวกัน: ป้อนคำอธิบายรูปภาพที่นี่


มักจะ ทำรายการกับfunctionsbuiltin คุณจะได้รับการส่งออกถ้าคุณมีปัญหา undefine ฟังก์ชั่นครั้งแรก (?): unfunction __rvm_checksum_read?
mpy

ถ้าฉันต้องการได้รับรายชื่อฟังก์ชั่น (ไม่ใช่การประกาศแบบเต็ม)? หากฉันยกเลิกการทำงานของวิธีนั้น __rvm_curl อีกอันก็มีปัญหาเช่นกัน
justingordon

ดูคำตอบของฉัน แต่พฤติกรรมที่คุณอธิบายฟังดูแปลก ๆ ... ดังนั้นจึงไม่สนใจ: รายชื่อเต็มสามารถทำงานร่วมกับเทอร์มินัลอีมูเลเตอร์อื่นได้หรือไม่ คุณสามารถใช้ฟังก์ชั่นที่มีปัญหาประสบความสำเร็จได้หรือไม่?
mpy

เครื่องเทอร์มินัลมีปัญหาเช่นเดียวกับข้อ 2 คำตอบด้านล่างนี้น่ากลัว ในขณะที่ฉันอยากจะรู้ว่าทำไมเทอร์มินัลแฮงค์เพียงแค่ใช้คำสั่ง 'ฟังก์ชั่น' (แม้ว่าจะลดลงถึงน้อยลง) มันมีความสำคัญอย่างไร? ด้วยเหตุผลใดก็ตามนี้จะทำให้เกิดปัญหา?
justingordon

ฉันคิดว่ามีบางตัวอักษรที่แปลกมากในซีเควนซ์เหล่านี้ functions > /tmp/fooเพื่อทำการลงนี้คุณสามารถเปลี่ยนเส้นทางออกไปยังแฟ้ม หากเป็นปัญหา zsh นี่ก็ควรมีปัญหาเช่นกัน เมื่อเป็นปัญหาของเทอร์มินัลก็ไม่ควร หากปัญหาของคุณอาจรบกวนการใช้งานทุกวัน - ฉันไม่สามารถพูดได้ขอโทษ
mpy

คำตอบ:


19

ด้วยการโกงโดยดูที่_functionsฟังก์ชั่นเสร็จฉันสามารถตอบคำถามของคุณ:

ฟังก์ชั่นจะถูกเก็บไว้ในอาเรย์แบบเชื่อมโยงfunctionsดังนั้นเพื่อให้ได้เพียงชื่อฟังก์ชั่น ( kตั้งค่าสำหรับคีย์ ) ตามลำดับตัวอักษร ( oตั้งค่าสถานะสำหรับการสั่งซื้อ ) คุณสามารถใช้

print -l ${(ok)functions}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.