한 줄씩 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

참고자료

관련 정보