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


94

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

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

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


2
누군가가 한 번의 발생을 침묵시키려는이 질문을 발견하면 pushd및 popd을 cd및로 대체 할 수 있습니다 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.