이 파이프라인에서 `2>&1`이 작동하지 않는 이유는 무엇입니까?

이 파이프라인에서 `2>&1`이 작동하지 않는 이유는 무엇입니까?

NAS에서 오류를 리디렉션하는 방법을 찾을 수 없습니다.

쉘은 /bin/sh사용 중이지만 > mylogfile.log 2>&1여전히 터미널에 오류 인쇄가 표시됩니다. 구체적인 명령은

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

에서 오류가 발생했습니다 find. 리디렉션이 작동하도록 하는 방법이 있나요? find로그 파일에 오류를 기록하는 방법은 무엇입니까 ?

답변1

find /volume1/ | grep "totoro" > ~/totoro.log 2>&1

당신은 2>&1영향을 미칠 grep뿐이지 find. 아래 명령에서 첫 번째 2>&1영향은 다음과 같습니다 find.

find /volume1/ 2>&1 | grep "totoro" > ~/totoro.log 2>&1   # probably wrong

find그러나 이것은 stdout과 함께 stderr을 에서 으로 보냅니다 grep. grep에서 stderr을 필터링하고 싶지 않을 수도 있습니다 find. 전체 구성된 명령의 stdout 및 stderr을 캡처하려는 것 같습니다. 그렇다면 명시적인 하위 셸에서 명령을 실행하고 출력 및 오류 스트림을 리디렉션합니다.

(find /volume1/ 2>&1 | grep "totoro") > ~/totoro.log 2>&1

답변2

"티" 명령을 참조하세요. 표준 입력에서 읽고 표준 출력 및 파일에 씁니다. 여기서는 이것이 도움이 될 수 있습니다.

관련 정보