パイプで始まるbashエイリアスは機能しませんか?

パイプで始まるbashエイリアスは機能しませんか?

パイプで始まるエイリアスを作成しようとしています。

前任者:

echo -i "hello\nworld" | grep world
> world
alias gr="| grep"
echo -i "hello\nworld" gr world
> hello
> world gr world

つまり、エイリアスがパイプで始まると正しく機能しないようです。これを行う方法はありますか?

答え1

からman bash

エイリアスを使用すると、単純なコマンドの最初の単語として使用するときに単語を文字列に置き換えることができます。

パイプは単純なコマンドの最初の単語にすることはできません。

答え2

ああ、あなたのエイリアスは動作します。単独で試行すると、行の開始によってシェルgrで構文エラーが発生します。|これは明らかにエイリアスが機能することを意味します。つまり、ある文字列を別の文字列に置き換えます。いつすべきですか?

あなたの例ではgrパラメータとして扱われるので、echo代替はありません。エイリアスにパイプがない場合でもそうではありません。初期パイプシンボルは、エイリアシングが発生するかどうかを決定しませんが、エイリアシングメカニズムに関連しないエラーを発生させます。

答え3

シェルを切り替えたり、切り替えたい場合は、別名を次のように設定してzshでこれを実行できます。

alias -g gr="| grep"

関連情報