
출력을 한 줄씩 리디렉션할 수 있는 거의 사용되지 않는 유형의 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