パイプ出力をgrepできません。

パイプ出力をgrepできません。

ripgrep を使用して、次の操作を実行できます。

ps aux | rg 'process name'

前のコマンドの出力を取得できます。何らかの理由でこれは通常を使用して機能しますgrep

ps aux | grep 'process name'

それは私がgrepにパイプすることを無視し、私が入力したプロセスの現在の作業ディレクトリを検索します。

これはps auxの出力です: PS補助出力

たとえば、Firefox を grep すると表示されません。

ps aux | rg firefox私にこれを与えた: ps auxとrg

編集:これはここで説明されている一種のエイリアシングによるものです。https://unix.stackexchange.com/a/500727/375504

これは働きます:ps aux | \grep firefox

答え1

使えば言うps aux | grep 'process name' それは(grep)私がgrepにパイプしたいことを無視し、現在の作業ディレクトリを検索します。

あなたも書いたgrepのエイリアスは次のとおりです。grep -nRi

grep()の文書を見ると、フラグが説明するものと正確に一致することman grepがわかります。-R

-r--recursiveコマンドラインにある場合にのみ、シンボリックリンクに沿って各ディレクトリの下のすべてのファイルを繰り返し読み込みます。 [...]

そして

-R--dereference-recursive各ディレクトリのすべてのファイルを再帰的に読み込みます。すべてのシンボリックリンクに従ってください。-r

GNU grepの場合、grep -rファイル名引数が指定されていない場合、デフォルトは現在のディレクトリから始まります。他のいくつかのバージョンのgrepはこれを実行しませんが、stdinの読み込み中に「stdinの再帰検索」について警告することがあります。

grep解決策は、別の名前でエイリアスを使用しないことです。特定の機能が必要な場合は、新しいエイリアスを作成します(rgrepたとえば、ここでは代替として使用できます)。

答え2

私の問題は、bash aliasesにエイリアスを追加したことですgrepgrep -nRi $*エイリアスや通貨を削除すると、\grep問題が解決する可能性があります。

関連情報