同じ名前の既存のコマンドを呼び出す関数をzshで作成するにはどうすればよいですか?


9

zsh関数自体と同じ名前の既存のコマンドを呼び出す関数をどのように記述できますか?たとえば、私はこれを試して私の質問を説明しました:

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

で実行するとls *、次のようになります。

ls:1: maximum nested function level reached

これは関数が再帰的に呼び出されているためだと思います。どうすればそれを回避できますか?

これは大まかな例であり、この場合はエイリアスで十分ですが、エイリアスが適切でないより複雑な例があるため、関数を作成する必要があります。

回答:


25

何が起こっているかというと、ls関数を再帰的に呼び出しているということです。バイナリを使用するには、ZSHのcommand組み込みを使用できます。

function ls {
    command ls -l "$@"
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.