Bagaimana saya bisa membuat fungsi dalam zsh yang memanggil perintah yang ada dengan nama yang sama?

9

Bagaimana saya bisa menulis fungsi zshyang memanggil perintah yang ada dengan nama yang sama dengan fungsi itu sendiri? Misalnya, saya sudah mencoba ini untuk menggambarkan pertanyaan saya:

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

Ketika saya menjalankannya dengan ls *saya mendapatkan yang berikut:

ls:1: maximum nested function level reached

Saya berasumsi ini karena fungsinya dipanggil secara rekursif. Bagaimana saya bisa menghindarinya?

Ini adalah contoh kasar, dan dalam hal ini alias akan melakukan pekerjaan, tapi saya punya contoh yang lebih kompleks di mana alias tidak cocok dan jadi saya perlu menulis fungsi.

Andrew Ferrier
sumber

Jawaban:

25

Apa yang terjadi adalah bahwa Anda secara rekursif memanggil lsfungsi Anda . Untuk menggunakan biner, Anda dapat menggunakan ZSH's commandbuiltin.

function ls {
    command ls -l "$@"
}
jordanm
sumber