이 구조를 이해하는 데 약간의 어려움이 있습니다 prog > file 2>&1
. '보내다'라는 뜻으로 읽었다.표준 출력그리고표준 에러하지만 내 질문은 어떻게?
제가 알기로 prog > file
기본적으로 보내는 것은표준 출력보관소. 나도 이게 무슨 prog 2>&1
뜻인지 이해함표준 에러로 보내야 한다표준 출력. 하지만 점들을 연결할 수는 없습니다 prog > file 2>&1
. 여기 전문가가 해독하는 데 도움을 줄 수 있나요?
답변1
왼쪽에서 오른쪽으로 읽으면 됩니다.
> file
--> 모든 것을 에서 으로 리디렉션합니다stdout
. ( 에서 까지의 지점 간 링크가 있다고 상상할 수 있습니다file
)stdout
file
2>&1
--> 에서 지금까지 모든 내용을stderr
리디렉션stdout
합니다file
.
그래서 결론:
stderr --> stdout --> file
좋은 참고자료를 확인하실 수 있습니다여기.
답변2
당신은 무엇을 놓치고 있습니까? 당신은 모든 것을 파악한 것 같습니다. > file
출력을 표준 출력으로 보내고 표준 오류를 표준 출력으로 보냅니다 file
. 2>&1
최종 결과는 stderr과 stdout이 모두 file
.
이를 설명하기 위해 다음의 간단한 Perl 스크립트를 고려하십시오.
#!/usr/bin/env perl
print STDERR "Standard Error\n";
print STDOUT "Standard Output\n";
이제 출력을 살펴보십시오.
$ foo.pl ## Both error and out are printed to the terminal
Standard Error
Standard Output
$ foo.pl 2>file ## Error is redirected to file, only output is shown
Standard Output
$ foo.pl 1>file ## Output is redirected to file, only error is shown
Standard Error
$ foo.pl 1>file 2>&1 ## Everything is sent to file, nothing is shown.