여러 명령을 입력으로 리디렉션

여러 명령을 입력으로 리디렉션

여러 명령의 출력을 다른 명령의 입력으로 리디렉션하는 올바른 방법은 무엇입니까?

예를 들어

$ command < (command2 | grep pattern)

답변1

(의심스러운 경우에는 bash를 나타냅니다.)

파이프를 생성(또는 기존 확장)하여 한 명령 또는 파이프의 출력을 다른 명령에 대한 입력으로 사용할 수 있습니다.

command1 | command2
command1 | command2 | command3

여러 명령(파이프 포함)을 하위 쉘 또는 목록(그룹 명령)과 결합할 수 있습니다. 이 조합은 파이프라인의 첫 번째 부분이 됩니다.

(command1; command2 | command3; command4) | command5
{command1; command2 | command3; command4;} | command5 # note the ; before }

또 다른 가능성은 "여기에 문자열"(또는 "여기에 문서")입니다.

command2 <<< $(command1)

command2 <<EOT
First input line
$(command1)
Last input line
EOT

기타 사례

명령 대체출력이 명령줄의 일부여야 할 때 사용합니다. 즉, 한 명령이 다른 명령의 출력을 자체 인수로 처리해야 하는 경우:

echo $(date)

echo는 echo의 출력을 date마치 명령줄에 입력한 것처럼 인수로 처리합니다.

프로세스 대체다른 프로세스의 출력이 명령줄에 인수로 제공된 (검색할 수 없는) 파일의 내용으로 표시됩니다.

grep bar <(echo $'foo\nbar\nbaz')

그렙 같은데

echo $'foo\nbar\nbaz' > /path/to/file
grep bar /path/to/file

답변2

다음을 사용하여 명령을 실행해야 합니다.명령 대체통사론.

$ command < $(command2 | grep pattern)

관련 정보