여러 bash 스크립트에서 pushd / popd 스택을 표시하지 마십시오 (quiet pushd / popd).


94

pushd 또는 popd를 사용할 때마다 스택이 표준 출력으로 인쇄됩니다. 그렇게하지 않는 방법?

하고 싶지 않아 pushd > /dev/null 서로를 호출하는 많은 스크립트가 있기 때문에 매번 .

좋은 재정의가이를 수행 할 수도 있지만 스크립트에서만 이러한 내장 기능을 재정의 한 다음 올바른 동작을 복원해야합니다.


2
누군가가 한 번의 발생을 침묵시키려는이 질문을 발견하면 pushdpopdcd및로 대체 할 수 있습니다 cd ~-. $ OLDPWD로 설정 ~-되는 물결표 확장 입니다 .
Agustín Lado

@ AgustínLado cd -도 작동합니다. 어떤 버전이 다양한 시스템과 더 잘 호환되는지 확실하지 않습니다.
Shiplu Mokaddim

1
@ShipluMokaddim : 물결표없이 폴더 이름을 인쇄합니다 (적어도 WSL에서 실행되는 Ubuntu 18.04에서는).
astraujums

a cd some/path와 a cd -또는 cd "${return_wd}"그와 비슷한 것 사이에 일련의 명령이 있으면 그 사이에 명령을 함수로 그룹화하고 (cd some/path; your_commands_here). 이전 PWD 로의 디렉토리 탐색은 서브 쉘의 끝에 내포되어 있습니다. 명령 대체에도 작동합니다.
user4642212

답변:


134

추가 할 수 있습니다

pushd () {
    command pushd "$@" > /dev/null
}

popd () {
    command popd "$@" > /dev/null
}

각 스크립트의 맨 위에. 이것은 아마도 문제를 해결하는 데 필요한 최소 작업량 일 것입니다.


정확히 내가 필요했던 것 ... 감사합니다!
RonzyFonzy 2016 년

오류 (예 : 해당 디렉토리 없음)를 &>>
무시

4
오류를 차단할 때주의하십시오. 나중에 진단하기 어려운 오류를 만들 수 있습니다. 비정상 리턴 코드를 확인하고 그에 따라 응답하십시오.
David Spillett

1
@ xdevs23 || exit $?|| exit. 동일에 대한 return.
user4642212

1
@bmacnaughton 필수 인수 가 없습니다 . 그것은 및 (정수에 대한 ) 인수 -n의 전체 패밀리를 허용 합니다. -N+NN
chepner

3

.profile 파일 (시스템에서 호출되는 내용)에 다음을 추가하십시오.

pushd () {
    command pushd "$@" > /dev/null
}

popd () {
    command popd "$@" > /dev/null
}

export pushd popd

13
이것은 시스템 전체에 영향을 미칩니다. 개인적으로이 방법은 권장하지 않습니다. .
Sean83

3

zsh에서는 setopt PUSHDSILENT. 이것을 ~/.zshrc.


1
또는 popd -q(조용함)을 사용하십시오.
rxw

5
popd에는 -q옵션 이 없습니다
MarekN 19

2
@MarekN : "popd -q"의 이전 주석은 원래 질문이 zsh가 아닌 bash 답변을 원하는 것으로 태그 지정되었지만 bash가 아닌 zsh를 참조했습니다.
b-jazz

이것은 좋은 코멘트이거나 대답에 대한 접선이지만에 대해 묻지 않는 질문에 대한 독립형 대답으로는 속하지 않습니다 zsh.
chepner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.