2013-07-04 3 views
1

"rmdir *"을 터미널에서 실행하려고했습니다. 일부는 현재 폴더 아래에있는 디렉토리가 아니기 때문에 디렉토리가 아닌 일부 파일을 보여주는 오류 메시지가 표시됩니다. 내 목표는 아무런 출력없이 명령을 자동으로 실행하는 것입니다.터미널에서 출력하지 않고 Linux에서 명령을 실행할 수없는 이유는 무엇입니까?

rmdir * > /dev/null 
rmdir * > file.txt 
rmdir * |grep "noexist" (some non-existing characters) 
rmdir * 2>&1 > /dev/null 
rmdir * 2>&1 > file.txt 
rmdir * 2>&1 |grep "noexist" 

마지막 명령이 작동 :

나는 다음과 같은 시도! 조금 혼란 스럽다. 마지막 명령이 작동하면 왜 4 번째 명령과 5 번째 명령이 작동하지 않습니까?

답변

4

> STDOUT을 리디렉션합니다. 2>은 STDERR을 리디렉션합니다. &1은 STDOUT (으)로 리디렉션됩니다. |은 새 프로세스에 대해 STDOUT을 STDIN으로 전송합니다.

이나요 당신이 시도 :

널 (null) 디바이스에 모두 STDOUT 및 STDERR 리디렉션
rmdir * > /dev/null 2> /dev/null 

.

+2

불필요하게 시끄럽지 않습니다. rmdir *>/dev/null 2> & 1은 정상적으로 작동합니다. – tink

1
1) Doesn't redirect stderr using 2>... 
2) See 1. 
3) See 2. 
4) Redirects stderr to stdout, and stdout is redirected to /dev/null, so you still see the redirected stderr on stdout. 
5) See 4. The file to which stdout is redirected is just different. 
6) This works because you redirected stderr to stdout. stdout is piped in to grep as grep's stdin. 

는 정말로 작동 무엇 :

rmdir * >/dev/null 2>&1 

왜 작동합니까? 첫 번째 stdout이/dev/null로 재 지정 되었기 때문입니다. 그런 다음 stderr은 이미/dev/null로 리디렉션 된 stdout으로 리디렉션되었습니다.

+1

답장을 보내 주셔서 감사합니다. 매우 명확한. 하지만 다른 사람이 먼저 대답 :> BTW, 난 그냥 사용할 수 있습니다 rmdir * 2>/dev/null 찾으십시오. 그래서 내 상황에서는 표준 출력이 없다고 생각합니다.> –

0

디렉토리가 비어있을 때까지는 rmdir을 사용할 수 없습니다. 작업을 수행하기 전에 .. ..

관련 문제