bash 中 grep 的最大字元範圍是多少?使用 grep 命令搜尋的字串可以有多長?
答案1
函數參數的最大長度exec()
(由 shell 用於啟動進程)由標頭ARG_MAX
中的值定義limits.h
。該值也可以透過getconf
命令獲得。在我的系統上:
$ getconf ARG_MAX
262144
這意味著完整的命令列(在處理完所有變數替換等之後),包括任何環境變數及其值,不得超過 256 KiB,以保證 shell 接受它。
POSIX 保證ARG_MAX
至少為 4096。
有關 Linux 特定的討論ARG_MAX
,請參閱Stéphane Chazelas 對相關問題的回答。
有關此問題的深入討論,請參閱https://www.in-ulm.de/~mascheck/various/argmax/(外部連結)。
您grep -f patterns file
可以透過將您想要的模式放入grep
檔案中來繞過命令列的最大長度patterns
。模式數量的限制將是您的可用 RAM,而不是系統對命令列長度施加的限制。