bash에서 grep의 최대 문자 범위는 얼마입니까? grep 명령을 사용하여 검색할 수 있는 문자열은 얼마나 됩니까?
답변1
함수 인수(프로세스를 시작하기 위해 셸에서 사용)의 최대 길이는 exec()
헤더 ARG_MAX
의 값으로 정의됩니다 limits.h
. 이 값은 getconf
명령을 통해서도 얻을 수 있습니다. 내 시스템에서:
$ getconf ARG_MAX
262144
이는 전체 명령줄(모든 변수 대체 등이 처리된 후)을 의미합니다.환경 변수와 해당 값을 포함합니다., 셸이 이를 허용하도록 하려면 256KiB를 초과해서는 안 됩니다.
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이며 명령줄 길이에 대한 시스템 제한이 아닙니다.