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 になります。grep
patterns