質問: emacsでrgrepを実行すると、grepがコード123で異常終了します 仲間のemacsersにご挨拶gnu "ubuntu 10.04.1lts"でemacs23.1.1を実行していますが、標準のlinuxカーネルソースコード(vanilla)で組み込みのmxrgrepを使用して実行した検索は途中で終了しますemacsエコー領域に次のエラーが出力されます。grep exited abnormally with code 123 私はredhatシステムでもしばらくの間それを見てきました、そして他の(大きな)コードベースで、誰かがそれを見た、あるいはもっとよく治しましたか?ありがとう!編集:私以外の理由で、stackexchangeでは以下のコメントを編集できないため、ここで更新します。以下のコメントに続いて、rgrepがemacsシェルバッファーで実行するのと同じコマンドを実行しようとしました find . \( -path \*/sccs -o -path \*/rcs -o -path \*/cvs -o -path \*/mcvs -o -path \*/.svn -o -path \*/.git -o -path \*/.hg -o -path \*/.bzr -o -path \*/_mtn -o -path \*/_darcs -o -path \*/\{arch\} \) -prune -o -type f \( -name \*.\[ch\] \) -p rint0 | xargs -0 -e grep -i -nh -e v4l_compat_ioctl32 エラーは出力されませんが、終了コードを調べると、同じ123が再度表示されます。/home/mcradle/linux> echo $? 123 私が実行しようとしたgillesからのコメントに続いて/home/mcradle/linux> find . -type f \( -name \*.\[ch\] \) -exec grep -i -nh -e v4l_compat_ioctl32 '{}' \; これは、findとxargsの組み合わせと機能的に同等であり、終了コード0で完了します。/home/mcradle/linux> echo $? 0 したがって、xargsを使用したもののようです。
回答: xargsの終了コードのドキュメントを見る:123 if any invocation of the command exited with status 1-125 ただし、grepのドキュメントによると、grepがパターンと一致しなかった場合の終了ステータスは1です。exit status normally, the exit status is 0 if selected lines are found and 1 otherwise. したがって、私には、emacsが「rgrep」検索を発行するために使用するコマンドラインは常に123を返すようであり、このエラーを抑制するか、次のようなコマンドラインに置き換える必要があります。find . -type f \( -name \*.\[ch\] \) -exec grep -i -nh -e v4l