답변:
&
의는 2>&1
단순히 수를 말한다 1
파일 기술자가 아닌 파일 이름입니다. 이 케이스에서 standard output file descriptor
.
을 사용하면 2>1
오류가 호출 된 파일로 오류가 리디렉션 1
되지만을 사용하면이 파일 2>&1
을로 보냅니다 standard output stream
.
이것은 어딘가에 와를 &>
보내라고 말합니다 . 예를 들어 . 이것을 예로 들어 설명하겠습니다.standard output
standard error
ls <non-existent_file> &> out.file
설정:
파일 만들기 koko
다음 내용을 :
#!bin/bash
ls j1
echo "koko2"
그것을 실행 가능하게 만드십시오 : chmod u+x koko
이제 j1
존재하지 않습니다.
이제 실행 ./koko &> output
실행 cat output
하면 볼 수 있습니다
ls: cannot access 'j1': No such file or directory
koko2
standard error
( ls: cannot access 'j1': No such file or directory
) 및 standard output
( koko2
) 모두 파일로 전송되었습니다 output
.
이제 다시 실행하지만 이번에는 다음과 같이 수행하십시오.
./koko > output
당신 cat output
과 koko2
같은 것을 볼 수 있습니다. 그러나 ls j1
명령 에서 출력 된 오류는 아닙니다 . 그것은 standard error
당신이 당신의 터미널에서 보게 될 것으로 보내질 것입니다.
@Byte Commander의 중요한 참고 사항 :
에 있습니다 command >file 2>&1
리디렉션의 순서 중요하다. command 2>&1 >file
대신 (보통 원하는 것이 아닌) 쓰는 경우 먼저 명령 stdout
을 파일로 리디렉션 한 다음 명령 stderr
을 현재 미사용으로 리디렉션 stdout
하므로 터미널에 표시되므로 파이프로 연결하거나 리디렉션 할 수 있습니다 다시 파일에 기록되지 않습니다.
command >file 2>&1
재 지정의 순서 중요하다. command 2>&1 >file
대신 (보통 원하는 것이 아닌) 쓰는 경우 먼저 명령의 stdout을 파일로 리디렉션 한 다음 명령의 stderr를 사용하지 않는 stdout으로 리디렉션하므로 터미널에 표시되어 파이프로 연결할 수 있습니다 다시 리디렉션하지만 파일에 기록되지 않습니다.
standard output
터미널에서 볼 수있는 주소로 전송됩니다 ." 이것이 ""이어서는 안 standard error
됩니까?
[n]>&word
라고 복제 출력 파일 설명자 (참조 섹션 2.7.6 POSIX 쉘 언어 표준의 참조). 이 특정 행동을 포함 포탄, 본 쉘과 같은의 기능으로 ksh
, dash
그리고 bash
; 실제로이 표준은 Bourne shell 및을 기반으로 ksh
합니다. 로 찾고 tcsh를 하고 CSH 매뉴얼, 그들은 분명히 그러나의 설명에서, 어떤 파일 기술자를 복제하는 기능을 제공하지 않는 >&
이와 같이 동작 &>
에서 bash
(이다, 리디렉션 오류 및 파일에 정상 출력).
우분투를 포함한 * nix와 같은 시스템에서는 모든 것이 파일이거나 오히려 파일 디스크립터 라고 들었습니다 . 표준 출력을 일정 파일 기술자 1이고, 표준 오차는 파일 기술자 (2) 그래서이고, > FILE 2>&1
기술적으로의 환언 파일 기술자 1에 중복 파일 디스크립터 수단 (2) 이 응답 :
2> & 1은 쉘에게 디스크립터 1의 복제 인 파일 디스크립터 2를 제공하도록 지시합니다 (예 : stderr & stdout은 동일한 fd를 가리킴).
여기서 핵심은 설명자 1을 먼저 설정해야한다는 것입니다. 셸 프로세스 리디렉션이 올바른 순서로 남아 있기 때문에,이 command >FILE 2>&1
에 대한 재배 선 표준 출력에 쉘을 알려줍니다 command
에 갈 FILE
첫째, 오직 다음 설명이이 같은 위치에 1, 2 점 1의 사본이 될 수 있습니다 - FILE
.
물론 이것은 표준 오류 및 표준 출력을 뛰어 넘습니다. 에서 쇼로 이 답변 , 수행하여3&>2
... 파일 디스크립터 2를 파일 디스크립터 3에 복제하고 (dup2), 파일 디스크립터 3이 이미 열려 있으면 닫을 수 있습니다.
많은 것들 중에서 파일 디스크립터를 조작하는 예는 명령의 출력 을 변수로 캡처하는 것입니다dialog
또한 &>
특정에 주목할 가치가 bash
있습니다. 에서는 zsh
이 동일하게 동작하지만, 문서에 따르면, "... multios의 존재와 같은 효과가 '워드 2>> & 1'않는다". POSIX 호환에서는 /bin/sh
백그라운드로 명령을 넣을 때 정기적 인 리디렉션으로 처리됩니다. 구문 상 유효한 bash 코드가 아닌 sh 코드가 있습니까?를 참조하십시오 . .
또한보십시오:
&>
뜻입니까?