ฉันจะสร้างฟังก์ชั่นใน zsh ที่เรียกคำสั่งที่มีอยู่ด้วยชื่อเดียวกันได้อย่างไร?


9

ฉันจะเขียนฟังก์ชั่นในzshที่เรียกคำสั่งที่มีอยู่ด้วยชื่อเดียวกันกับฟังก์ชั่นได้อย่างไร ตัวอย่างเช่นฉันได้ลองทำสิ่งนี้เพื่ออธิบายคำถามของฉัน:

function ls 
{
    ls -l $1 $2 $3
}

เมื่อฉันรันด้วยls *ฉันได้รับต่อไปนี้:

ls:1: maximum nested function level reached

ฉันคิดว่านี่เป็นเพราะฟังก์ชั่นจะถูกเรียกซ้ำ ฉันจะหลีกเลี่ยงสิ่งนั้นได้อย่างไร

นี่เป็นตัวอย่างที่หยาบคายและในกรณีนี้นามแฝงจะทำงาน แต่ฉันมีตัวอย่างที่ซับซ้อนกว่าที่นามแฝงไม่เหมาะและดังนั้นฉันจะต้องเขียนฟังก์ชัน

คำตอบ:


25

สิ่งที่เกิดขึ้นคือคุณกำลังเรียกlsหน้าที่ของคุณซ้ำ เพื่อที่จะใช้ไบนารีคุณสามารถใช้commandbuiltin ของ ZSH

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