/dev 오류에 null이 없습니다.

/dev 오류에 null이 없습니다.

다음 줄을 실행했습니다.

which lsb_release 2&>1 /dev/null

산출:

error: no null in /dev

에 오류가 ls /dev/null있는지 확인하기 위해 명령을 사용할 때 이 오류가 발생하는 이유는 무엇입니까? 나는 이 문제를 해독할 수 없다.null/dev

고쳐 쓰다

방금 which다른 사람의 시스템에서 위 명령을 시도했는데 오류가 발생하지 않고 정상적으로 실행되었습니다.

답변1

첫째, 리디렉션은 반드시 끝이나 시작 부분이 아닌 명령줄의 어느 곳에서나 발생할 수 있습니다.

예를 들어:

echo foo >spamegg bar

foo bar파일에 저장됩니다 spamegg.

또한 두 가지 버전이 있습니다 which. 하나는 내장 셸이고 다른 하나는 외부 실행 파일( debianutilsDebian과 함께 제공됨)입니다.

귀하의 명령에 따라:

which lsb_release 2>&1 /dev/null

이렇게 하면 먼저 수행되는 2&>1리디렉션이 아니라 STDOUT(FD 1)이 가리키는 위치로 STDERR(FD 2)을 리디렉션하게 됩니다 ./dev/null

따라서 나머지 명령은 다음과 같습니다.

which lsb_release /dev/null

유사한 명령이 없으므로 /dev/null오류가 발생합니다.

이 동작은 which쉘이 내장인지 외부 실행 파일인지에 따라 달라지며, bash내장이 없고 external 을 사용하면 ksh오류 메시지가 표시되지 않고 오류가 무시됩니다.dashwhich

반면에 zsh내장 which및 디스플레이를 사용하십시오.

/dev/null not found

which따라서 아마도 이 특정 오류는 사용 중인 셸의 내장 명령에 의해 표시됩니다.


또한 IE에 존재하지 않는 /dev/null경우 오류를 표시하기 위해 STDERR을 리디렉션하려는 것 같습니다 . lsb_release그렇다면 STDERR을 다음으로 리디렉션하십시오.PATHwhich/dev/null

which lsb_release 2> /dev/null

답변2

명령에 대한 구문 오류가 있습니다 which lsb_release 2&>1 /dev/null.

which lsb_release 2> /dev/null"sh" 유형의 쉘을 실행한다고 가정하고 이 명령을 실행하게 될 것 입니다 .

쉘 유형을 실행하는 경우 cshstderr 리디렉션에 더 많은 문제가 발생합니다.

관련 정보