stdout 및 stderr 리디렉션

stdout 및 stderr 리디렉션

실행된 파일(file_1.txt)의 stdout 및 stderr을 다른 파일(file_2.txt)로 리디렉션하고 이 출력을 file_2.txt 콘텐츠에 추가하고 싶습니다. 나는 이것을 시도했습니다 :

$ ./file_1.txt >>&2 file_2.txt

그건 소용없어요. 내가 뭘 잘못했나요? 올바른 명령은 무엇입니까?

답변1

셸이 bash또는 ksh(버전 2020.0.0, 다른 버전일 수도 있음)인 경우 필요한 것은 다음과 같습니다.

./file_1.txt >> file_2.txt 2>&1 

그러면 stderr가 file_2.txt에 추가된 stdout으로 리디렉션됩니다. &파일 이름이 아닌 파일 설명자를 사용하고 있음을 쉘에 알리 십시오 . 구문이 어떤 것에도 유효하지 않기 때문에 귀하가 가지고 있는 명령이 작동하지 않으므로 쉘이 리디렉션을 구문 분석할 수 없습니다.

file_2.txt위의 명령은 설명했듯이 이 두 명령을 리디렉션하여 이 문제를 해결합니다 .

그렇다면 bashSteeldriver가 제공하는 것을 사용할 수도 있습니다.

./file_1.txt &>> file_2.txt

그것은 같은 일을 합니다. &stdout과 stderr을 표현 >>하고 file_2.txt.

tcsh테스트 후 둘 다 버전 6.21.00에서는 작동하지 않습니다. 그들은 각각 Invalid null command.과 를 줍니다 Ambiguous output redirect.

관련 정보