web-dev-qa-db-ja.com

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

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

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

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

ls:1: maximum nested function level reached

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

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

9
Andrew Ferrier

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

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