실행된 파일(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
위의 명령은 설명했듯이 이 두 명령을 리디렉션하여 이 문제를 해결합니다 .
그렇다면 bash
Steeldriver가 제공하는 것을 사용할 수도 있습니다.
./file_1.txt &>> file_2.txt
그것은 같은 일을 합니다. &
stdout과 stderr을 표현 >>
하고 file_2.txt
.
tcsh
테스트 후 둘 다 버전 6.21.00에서는 작동하지 않습니다. 그들은 각각 Invalid null command.
과 를 줍니다 Ambiguous output redirect
.