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이 됩니다.