2> / dev / null은 무엇을 의미합니까?


답변:


347

> 연산자는 일반적으로 출력을 파일로 리디렉션하지만 장치 일 수도 있습니다. >>를 사용하여 추가 할 수도 있습니다.

숫자를 지정하지 않으면 표준 출력 스트림이 가정되지만 오류를 리디렉션 할 수도 있습니다

> filestdout을 파일로
1> file리디렉션 stdout을 파일로
2> file리디렉션 stderr를 파일로
&> file리디렉션 stdout 및 stderr을 파일로 리디렉션

/dev/nullnull 장치는 원하는 입력을 가져 와서 버립니다. 출력을 억제하는 데 사용할 수 있습니다.


6
> /dev/null 2>&1과 의 차이점이 &> /dev/null
Alexander Mills

13
실제로 오늘날 나는 2>&1오래된 구문이 있다고 생각하지 않으므로 &>몇 년 전에는 작동하지 않았지만 둘 다 동일합니다.
워런 힐

28

즉, stderr(fd 2)를 블랙홀로 리디렉션합니다 (명령의 출력을 버림).

리디렉션에 대한 더 일반적인 사용 사례 :

command > /dev/null 2>&1 &

command백그라운드에서 실행 하고 삭제 stdout하고stderr

command >> /path/to/log 2>&1 &

commandstdout 및 stderr을 실행 하여 로그 파일에 추가하십시오.

Bash 4+에서는 더 짧지 만 읽기 쉬운 형식이 작동합니다.

command &>> /path/to/log

3
> /dev/null 2>&1대신 사용해야 할 이유가 &> /dev/null있습니까?
Craig McQueen

7
@CraigMcQueen &>은 Bash 4의 새로운 기능입니다. 전자는 전통적인 방식 일뿐입니다. 기억하기 쉽습니다.
Terry Wang

의 의견에 따라 @CraigMcQueen 이 답변 , &> /dev/null일부 껍질 만>을 / dev / null 2> & 1은 모든 POSIX 호환 쉘에서 작동에서 작동하지 않을 수 있습니다.
스택 언더 플로

3
왜 2 & 1>이 아닌 2> & 1입니까?
marienbad

1
@marienbad 그것은 실제로 게시 할 가치가있는 질문입니다 :-) 구문은이며 fn>target, fn파일 번호는 어디에 있습니까 (일반적으로 0-2, 일부 프로그램은 더 많은 숫자를 정의합니다) target일반적으로 파일 이름이지만 여기에는 다른 파일 번호 가 붙어 있습니다 &. "파일 이름 대신 파일 번호를 원합니다"에 대한 구문.
toolforger

9

/dev/null는 Linux / Unix에서 블랙홀로 취급되므로 여기에 무엇이든 넣을 수는 있지만에서 다시 가져올 수는 없습니다 /dev/null.

또한, stderr (ie )를 블랙홀 (ie ) 로 2>리디렉션한다는 의미입니다.>2/dev/null

당신의 명령은 :

grep -i 'abc' content 2>/dev/null 

이와 같은 다른 슬래시로 끝나지 마십시오 2>/dev/null/(디렉토리가 아님).


2

grep -i 'abc'컨텐츠는 오류를 포함하여 콘솔에 표시되는 출력을 생성합니다.

지정 2>/dev/null하면 오류가 콘솔에 출력되지 않도록 오류가 필터링됩니다.

더 자세하게 : 2는 오류 설명자가 오류가 기록되는 위치를 나타냅니다. 기본적으로 콘솔에 인쇄됩니다.

\> 이 경우 지정된 위치로 출력을 리디렉션합니다. /dev/null

/dev/null 무시하려는 출력을 보내는 표준 Linux 장치입니다.


간결하고 주제입니다. 좋은 대답입니다.
Sergiy Kolodyazhnyy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.