출력없이 “cd-“를 사용하십시오. 어떻게 실행 합니까? 시도 cd – 2>&1

cd -출력을 에코하지 않고 명령을 어떻게 실행 합니까?
시도 cd - 2>&1 /dev/null했지만 대상 디렉토리가 인쇄됩니다.
그 이유는 bash 함수를 사용하고 불필요한 출력을 원하지 않기 때문입니다.



답변

다음과 같이 시도하십시오.

cd - > /dev/null

당신은 또한 할 수 있습니다 :

cd - > uselessfile

출력을 STDOUT 대신 “uselessfile”파일로 보냅니다.

파일을 만들거나 덮어 쓰지 않고 추가 할 수도 있습니다.

cd - >> uselessfile

답변

@erewok은 이미 질문에 대답 했지만 실제로 무슨 일이 일어나고 있으며 왜 내 행동이 보이는지 설명 할 것입니다.

문제는 리디렉션에 있습니다. 글 쓰고 있구나:

cd - 2>&1 /dev/null

리디렉션은 명령 줄 내의 어느 위치 에나 나타날 수 있기 때문에 (직접 같은 간단한 것으로 직접 확인할 수 있음 echo a b 2>&1 c </etc/fstab d) 리디렉션이 실제로 제거 된 후에는 다음과 같습니다.

cd - /dev/null

문제가 보입니까? cd하나의 인수와 두 개의 재 지정이 아닌에 두 개의 인수를 전달 하고 있습니다. 한 번에 하나의 현재 디렉토리 cd에만있을 수 있으므로 첫 번째 인수 만 고려합니다 (이 경우에는) -.

아마도 작성하려는cd 것은 stderr 및 stdout을 / dev / null로 리디렉션 하는 명령입니다. 두 가지 방법이 있습니다.

귀하의 경우 가장 쉬운 방법은 >문자 를 추가하여 단순히 쉘에게 경로 재 지정을 알리는 것 입니다. @erewok이 제안하는 것입니다.

cd - 2>&1 >/dev/null

먼저 stderr (파일 설명자 2)를 파일 설명자 1 (stdout)로 리디렉션 한 다음 stdout (암시 적 1)을 / dev / null로 리디렉션합니다. 순서는 중요합니다. 리디렉션을 되 돌리면 동일한 결과를 얻지 못할 수도 있지만 특정 프로그램이 각 출력 스트림을 사용하는 방식으로 인해 나타나는 것처럼 보일 수도 있습니다.

또는 @demure 에서 제안한 &>것처럼이 구문이 쉘에서 지원되는 경우 두 스트림을 한 번에 리디렉션 하는 데 사용할 수 있습니다 .

cd - &>/dev/null

참고 수행 할 때 이러한 대안 중 하나가 또한 오류를 침묵 없다는 것을 $OLDPWD더 이상 존재하면 시스템 블랙홀로 표준 오류 출력을 리디렉션 이후를. 이것이 우려되는 경우 $?나중에 확인하겠습니다 . 당신은 이것이 정말로 우려되는 일이라면 이것을 직접 확인해야하지만, 적어도 내 테스트에서는 성공한 후에 실패 cd했는지 ( cd $someplace또는 상관없이 cd -) 설정합니다 .$? = 1$? = 0


답변

아마도 당신은 사용할 수 있습니다

cd $OLDPWD

그러나이 경우 더 입력해야합니다 🙂

그러나 오류가 있으면 메시지가 / dev / null로 리디렉션되지 않습니다.


답변

stdout 및 stderr를 리디렉션하십시오.
cd - &>/dev/null

&>짧은 손 버전입니다 cd - 2>/dev/null 1>&2.

  • 참고로 &>bash> = 4.0이 필요합니다.

추신. 대부분의 명령은 위치를 가리킬 수 있으므로 실제로 필요한 것은 아닙니다.cd


답변

당신이 사용할 수있는:

cd ~-

bash 맨 페이지에 따르면 Tilde Expansion:

물결표 접두어가`~- ‘이면 쉘 변수 OLDPWD의 값이 설정되어 있으면이를 대체합니다.