나는 모두를 리디렉션하는 방법의 모든 종류의 시도 stdout
와 stderr
에를 /dev/null
어떤 성공하지. 나는 거의 평생이 문제가 없었던 bash를 실행했지만 BSD에서 한 번은 /bin/sh
.
내가 시도한 것 :
if ls ./python* 2> /dev/null; then
echo found Python
fi
... 작동합니다. Python이 없으면 ls의 오류 메시지를 음소거합니다. 그러나이있는 경우 python.tgz
다음과 같이 출력되는 행이 있습니다.
# ./test.sh
./python-2.7.3p1.tgz
난 노력 했어:
if ls ./python* &> /dev/null; then
echo found Python
fi
과
if ls ./python* 2>1 > /dev/null; then
echo found Python
fi
과
if ls ./python* > /dev/null; then
echo found Python
fi
실제로 작동하는 것은 없습니다. 출력 중 하나만 리디렉션 할 수 있으며 동시에 둘 다 리디렉션 할 수는 없습니다.
이것은 Posix 호환 쉘에서 작동합니다.
ls good bad >/dev/null 2>&1
stdout 을 stderr로 복제하기 전에 먼저 stdout 을 리디렉션 해야합니다 . 먼저 복제하면 stderr은 원래 stdout이 가리키는 것을 가리킬 것입니다.
Bash , zsh 및 일부 다른 셸도 바로 가기를 제공합니다.
ls good bad &>/dev/null
이것은 명령 줄에서는 편리하지만 이식 가능한 스크립트에서는 피해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다