인수 목록이 너무 깁니다.

인수 목록이 너무 깁니다.

매우 큰 인수(크기 1MB)가 포함된 명령을 입력하려고 하는데 "인수 목록이 너무 깁니다."라는 메시지가 나타납니다. 그 주장을 어떻게 입력할 수 있나요?

OS: 리눅스 우분투

답변1

커널 제한보다 큰 경우 실행 파일 간에 인수를 전달할 방법이 없습니다 ARG_MAX.

당신이 가지고 있다면목록인수가 너무 길면 를 사용하여 더 작은 조각으로 나눌 수 있습니다 xargs. 이렇게 하면 필요한 만큼 명령이 실행되어 적합한 인수 수만큼 제공됩니다.

구문은 입니다 xargs command <file. 을 생략하면 command와 같은 인수가 표시됩니다 echo.

데모로서,

xargs -n 4 </etc/motd

한 줄에 처음 4개의 토큰을 인쇄하고(첫 번째 호출) 다음 4개는 다른 줄을 통해 인쇄합니다. (인수는 최대 인수 수를 설정하므로 제한을 전혀 -n사용하지 않습니다 .)ARG_MAX

실행하려는 명령에 바람직하지 않은 부작용이 있는 경우 작동하지 않을 수 있습니다. 예를 들어, command이전에 존재했던 파일을 덮어쓰는 경우 ./a.out, 작업이 완료된 후 마지막 실행 결과만 남게 됩니다.

command명령줄 인수 대신 파일이나 표준 입력을 읽도록 구성하거나 수정할 수 있으면 제한 사항이 해결됩니다. 파일이나 스트림은 보다 훨씬 클 수 있으며 ARG_MAX종종 그렇습니다.

관련 정보