라인별 bash 파이프라인이 있나요?

라인별 bash 파이프라인이 있나요?

출력을 한 줄씩 리디렉션하는 거의 사용되지 않는 bash 파이프 유형에 대해 어딘가에서 읽은 기억이 납니다(나중에는 잊어버렸습니다). 즉, 출력을 마지막에 한 번 리디렉션하는 대신 각 개행 문자에 대한 출력을 리디렉션하고 수신 프로세스를 여러 번 실행합니다. 찾을 수 있는 모든 bash 문서를 살펴봤지만 이 "파이프"가 실제로 존재하는지 알 수 없습니다.

라인별 파이프라인 같은 것이 있나요? 물론 이 작업은 다른 방법으로도 쉽게 수행할 수 있지만 좀 더 우아한 방법이 있는지 궁금합니다.

답변1

xargs를 찾고 있다고 생각하십니까? 디렉토리에서 모든 .bak 파일을 찾아 삭제하고 싶다고 가정해 보겠습니다.

find . -name "*.bak" -type f -print | xargs /bin/rm -f

발견된 각 파일에 대해 결과를 파이프하고 파일을 삭제합니다.

http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/

답변2

나는 당신이 이 도구를 고려하고 있다고 생각합니다 unbuffer. 이를 사용하여 출력이 한 명령에서 다른 명령으로 파이프될 때 발생하는 버퍼링을 비활성화할 수 있습니다.

다음과 같은 명령을 사용하면 페이지가 버퍼링될 때까지 출력이 표시되지 않습니다.

$ od -c /tmp/fifo | more

다음과 같이 자동 버퍼링을 비활성화할 수 있습니다.

$ unbuffer od -c /tmp/fifo | more

일반적으로 언버퍼는 STDIN에서 읽지 않습니다. 이는 unbuffer특정 상황에서 사용을 단순화합니다. 파이프라인에서 사용 하려면 unbuffer-p 플래그를 사용하세요.

$ process1 | unbuffer -p process2 | process3

인용하다

관련 정보