code

> &는 무엇을 의미합니까?

codestyles 2020. 11. 2. 08:00
반응형

> &는 무엇을 의미합니까?


이 표현에 약간 혼란 스러웠습니다.

gcc -c -g program.c >& compiler.txt

&>filenamestdout과 stderr을 모두 file로 리디렉션한다는 것을 알고 있습니다 filename. 그러나이 경우 앰퍼샌드는보다 큼 기호 뒤에 있습니다. M>&N, where Mand Nare file descriptors 형식처럼 보입니다 .

위의 스 니펫에서 does M=1and N='compiler.txt'? 이것이 정확히 어떻게 다른지 :

gcc -c -g program.c > compiler.txt     (ampersand removed)

내 이해는 각 열린 파일이 2보다 큰 파일 설명자와 연관되어 있다는 것입니다. 이것이 맞습니까?

그렇다면 파일 이름이 리디렉션 대상인 파일 설명자와 상호 교환 될 수 있습니까?


이것은 &>. bash 맨 페이지에서 :

표준 출력 및 표준 오류 리디렉션이 구조를 사용하면 표준 출력 (파일 설명자 1)과 표준 오류 출력 (파일 설명자 2) 모두 이름이 단어 확장 인 파일로 리디렉션 될 수 있습니다.

There are two formats for  redirecting  standard  output  and  standard
error:

       &>word
and
       >&word

Of the two forms, the first is preferred.  This is semantically equiva-
lent to

       >word 2>&1

&>vs >&: 선호하는 버전은 &>(clobber)

에 관해서:

  • &>
  • >&

둘 다 파일을 방해합니다 > file. STDIN 전용의 경우 처럼 파일에 쓰기 전에 파일을 0 바이트로 자릅니다 .

그러나bash수동 리디렉션 섹션 이 추가한다 :

두 가지 형식 중 첫 번째 형식이 선호됩니다. 이것은 의미 적으로 다음과 같습니다.

>word 2>&1

두 번째 형식을 사용할 때 단어 가 숫자 또는 -. 그렇다면 호환성을 위해 다른 리디렉션 연산자가 적용됩니다 (아래 파일 설명자 복제 참조).

(참고 : zsh모두 동일합니다 .)

다음 &>과 같은 이유로 첫 번째 ( ) 형식으로 손가락 메모리를 얻는 것이 좋습니다 .

지원 되지 않는 용도 &>>사용 (추가)>>&bash

추가 양식은 하나뿐입니다.

표준 출력 및 표준 오류를 추가하는 형식은 다음과 같습니다.

&>>word

이것은 의미 적으로 다음과 같습니다.

>>word 2>&1

(아래의 파일 설명자 복제 참조).

노트 :

  • 를 추가하는 방법이 한 가지뿐이므로 위 섹션에서 &>over 의 클로버 사용을 >&다시 권장 bash합니다.
  • zsh&>>>>&양식을 모두 허용합니다 .

참고 URL : https://stackoverflow.com/questions/11255447/what-does-mean

반응형