한 명령의 출력을 다른 두 명령의 입력으로 동시에 파이프하려면 어떻게해야합니까?
tee
명령이 원하는 작업을 수행하는 것 같습니다.
열쇠는 사용하는 것입니다
>( )
프로세스 대체 . tee
에서 다음 패턴을 사용합니다.
tee >(proc1) >(proc2) >(proc3) | proc4
따라서 ls
의 출력을 두 개의 다른 grep
프로그램에 대한 입력으로 사용하려면 각 grep
의 출력을 다른 파일에 저장하고 모든 결과를 less
, 시도 :
ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less
ls -A
의 결과는 grep
s 모두에 "파이프"됩니다. hidden-files
파일에는 첫 번째 grep
의 출력 내용이 포함되고 normal-files
에는 두 번째 grep
의 결과가 포함됩니다. 모든 파일이 호출기 [~ # ~] 편집 [~ # ~] : less
에 표시됩니다.less
에서 보는 것은 grep
s의 결과가 아니라 ls -A
의 정확한 출력 이 동일합니다. 출력을 ls -A
에서 less
로 수정하려면 (예 : 숨겨진 파일보다 먼저 일반 파일이 나열되도록 순서를 바꾸는 경우) 다음을 시도하십시오.
ls -A | tee >(grep ^[.]) >(grep -v ^[.]) >/dev/null | less
>/dev/null
가 없으면 grep
s의 출력이 ls -A
의 출력에 대체되는 대신 추가됩니다.