배쉬의 매뉴얼 페이지 리디렉션에 대한 두 가지 방법이있다 언급 표준 에러와 표준 출력 :
&> file
및 >& file
. 이제 stderr과 stdout을 모두 나타냅니다.
이 경우 >file 2>&1
stdout (1)을 파일로 리디렉션하지만 stderr (2)를 stdout과 동일한 위치로 리디렉션하도록 지시합니다! 따라서 목적은 동일 할 수 있지만 아이디어는 약간 다릅니다. 다시 말해 "존, 학교에 가십시오; Suzzie는 존이가는 곳으로 가십시오"
선호는 어떻습니까? &>
A는 bash
것. 따라서 스크립트를 이식하는 경우에는 그렇지 않습니다. 그러나 100 % 확신한다면 스크립트는 bash가있는 시스템에서만 작동합니다-선호 사항은 없습니다
dash
우분투의 기본값 인 데비안 애퀴 스트 쉘 (Debian Amquist Shell) 예제가 있습니다.
$ grep "YOLO" * &> /dev/null
$ grep: Desktop: Is a directory
grep: Documents: Is a directory
grep: Downloads: Is a directory
grep: Music: Is a directory
grep: Pictures: Is a directory
grep: Public: Is a directory
grep: Templates: Is a directory
grep: Videos: Is a directory
grep: YOLO: Is a directory
grep: bin: Is a directory
보시다시피 stderr은 리디렉션되지 않습니다
질문의 편집 내용을 해결하기 위해 if 문을 사용하여 $ SHELL 변수를 확인하고 그에 따라 리디렉션을 변경할 수 있습니다
그러나 대부분의 경우 > file 2>&1
작동해야합니다.
보다 기술적 인 용어로, 양식 [integer]>&word
은 Duplicating Output File Descriptor 라고 하며 POSIX 셸 명령 언어 표준에 의해 지정된 기능으로 대부분의 POSIX 호환 및 Brourne과 같은 셸에서 지원됩니다.
참조 및 출력 재 지정에 정확히 의미합니까 무엇?