리디렉션 매개변수에 대한 쉘 구문이요?

리디렉션 매개변수에 대한 쉘 구문이요?

stdio를 리디렉션하지 않고 프로그램의 출력을 인수로 리디렉션하려면 xargs를 사용해야 합니까?

예를 들어, ls파일 이름이 입력 스트림이 아닌 다음 명령에 대한 인수가 되기를 원합니다.

내가 말하는 내용에 대한 좋은 예가 있습니까? 이 예는 피상적이지만 출력을 ls매개변수 로 사용하여 cat파일의 내용을 표시 한다는 의미를 보여줍니다 .

답변1

첫 번째,하다아니요분석하다ls. 파일 이름을 얻는 신뢰할 수 있는 방법은 많이 있지만ls아니요그들 중 하나.

다음은 셸의 글로빙을 사용하여 파일 이름을 생성하고 null로 구분된 파일 이름 목록을 xargs실행하는 파일 이름 에 전달합니다 cat.

printf '%s\0' * | xargs -0 cat

나는 이것의 목적이 파일->xargs를 보여주는 것임을 알고 있습니다. 물론 그렇지 않으면 명령줄에 들어갈 파일이 너무 많지 않는 한 위의 내용을 다음으로 바꿀 수 있습니다.

cat *

더 선택적인

lsprintf '%s\0' *다 하위 디렉터리를 포함하여 디렉터리의 전체 내용을 표시합니다. 예를 들어 일반 파일은 포함하지만 하위 디렉터리는 포함하지 않는 등 보다 선택적인 경우 CAS에서 제안한 대로 find더 나은 도구는 다음과 같습니다.

find . -maxdepth 1 -type f -print0 | xargs -0 cat

또는:

find . -maxdepth 1 -type f -exec cat {} +

find유용한 옵션이 많이 있습니다. man find자세히보다.

관련 정보