Каков максимальный диапазон символов grep в bash?

Каков максимальный диапазон символов grep в bash?

Каков максимальный диапазон символов grep в bash? Какова длина строки в качестве входных данных для поиска с помощью команды grep?

решение1

Максимальная длина аргументов функции exec()(используемых оболочкой для запуска процесса) определяется значением ARG_MAXв limits.hзаголовке. Это значение также доступно через getconfкоманду. В моей системе:

$ getconf ARG_MAX
262144

Это означает, что вся командная строка (после обработки всех подстановок переменных и т.п.)включая любые переменные среды и их значения, не должен превышать 256 КБ, чтобы оболочка гарантированно его приняла.

POSIX гарантирует, что ARG_MAXэто значение не менее 4096.

Для обсуждения, касающегося Linux ARG_MAX, см.Ответ Стефана Шазеласа на связанный вопрос.

Для более подробного обсуждения этого вопроса см.https://www.in-ulm.de/~mascheck/various/argmax/(внешняя ссылка).


С помощью grep -f patterns fileвы можете обойти максимальную длину командной строки, поместив нужные вам шаблоны grepв файл patterns. Тогда ограничением на количество шаблонов будет доступная вам оперативная память, а не ограничение на длину командной строки, налагаемое системой.

Связанный контент