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,而不是系统对命令行长度施加的限制。