bash での grep の最大文字範囲は何ですか?

bash での grep の最大文字範囲は何ですか?

bash の grep の最大文字範囲は何ですか? grep コマンドを使用して検索する場合、入力できる文字列の長さはどれくらいですか?

答え1

関数の引数の最大長exec()(シェルがプロセスを開始するために使用) は、ヘッダーARG_MAXのの値によって定義されますlimits.h。この値は、getconfコマンドからも取得できます。私のシステムでは、次のようになります。

$ getconf ARG_MAX
262144

これは、完全なコマンドライン(すべての変数置換などが処理された後)を意味します。環境変数とその値を含むシェルが確実に受け入れるためには、256 KiB を超えてはなりません。

POSIX ではARG_MAX少なくとも 4096 であることが保証されています。

Linux特有の議論についてはARG_MAX関連する質問に対するステファン・シャゼラスの回答

この問題に関する詳細な議論については、https://www.in-ulm.de/~mascheck/various/argmax/(外部リンク)。


を使用すると、ファイルにgrep -f patterns fileパターンを記述することで、コマンド ラインの最大長を回避できます。パターン数の制限は、システムによって課せられたコマンド ラインの長さの制限ではなく、使用可能な RAM になります。greppatterns

関連情報