"prog>file2>&1" 디코드

"prog>file2>&1" 디코드

이 구조를 이해하는 데 약간의 어려움이 있습니다 prog > file 2>&1. '보내다'라는 뜻으로 읽었다.표준 출력그리고표준 에러하지만 내 질문은 어떻게?

제가 알기로 prog > file기본적으로 보내는 것은표준 출력보관소. 나도 이게 무슨 prog 2>&1뜻인지 이해함표준 에러로 보내야 한다표준 출력. 하지만 점들을 연결할 수는 없습니다 prog > file 2>&1. 여기 전문가가 해독하는 데 도움을 줄 수 있나요?

답변1

왼쪽에서 오른쪽으로 읽으면 됩니다.

  • > file--> 모든 것을 에서 으로 리디렉션합니다 stdout. ( 에서 까지의 지점 간 링크가 있다고 상상할 수 있습니다 file)stdoutfile
  • 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.

관련 정보