Perl grepの1行バージョンをエイリアスに置き換える方法は?

Perl grepの1行バージョンをエイリアスに置き換える方法は?

私たちが使えることを発見しました

perl -wnle "/RE/ and print"

例えば

perl -wnle "/^.{0,80}$/ and print"

または

grep -ri someText * | perl -wnle "/^.{0,80}$/ and print"

80文字を超える行を除外します。

しかし、Bashでエイリアスとしてどのように設定しますか?

私は試した:

alias pgrep='perl -wnle "/$1/ and print"'

それから

grep -ri someText * | pgrep "^.{0,80}$"

しかし、それは言うでしょう

Can't open ^.{0,80}$: No such file or directory.

ベストアンサー1

aliasbashはいいいえパラメータを受け入れるように設計されており、パラメータが指定されている場合は、どのように処理するかわかりません。通常は避けてください。非常に単純なコマンド名の置換にのみ使用してください。

代わりに機能を使用することをお勧めします。これはpgrep有効なLinuxバイナリなので、使用しないでください。明示的な名前を使用することをお勧めします。

perlgrep() {
    perl -wnle "/$1/ and print"
} 

今電話してください

perlgrep '^.{0,80}$'

しかし、エラーが発生する理由は、パラメータalias自体を渡すことができないため、拡張が発生するとコマンドは次のようになるためです。

grep -ri someText * | perl -wnle "/$1/ and print" '^.{0,80}$'

perlこれは'^.{0,80}$、開いて正規表現を実行する必要があるファイル名で処理されるため、間違っています。

おすすめ記事