Nie wyświetlaj stosu pushd / popd w kilku skryptach bash (ciche pushd / popd)


99

Za każdym razem, gdy używam pushd lub popd, wypisuje stos na standardowe wyjście. Jak tego nie robić?

Nie chcę tego robić za pushd > /dev/nullkażdym razem, ponieważ mam wiele skryptów wywołujących się nawzajem.

Może wystarczy miła zmiana, ale będę musiał nadpisać te wbudowane tylko w moich skryptach, a następnie przywrócić poprawne zachowanie.


3
Jeśli ktoś natknął to pytanie chcąc uciszyć pojedyncze wystąpienie można zastąpić pushdi popdz cda cd ~-. ~-jest rozwinięciem tyldy ustawionym na $ OLDPWD .
— Agustín Lado

@ AgustínLado cd -również działa. Nie jestem pewien, która wersja jest bardziej kompatybilna z szeroką gamą systemów.
— Shiplu Mokaddim

1
@ShipluMokaddim: bez tyldy drukuje nazwę folderu (przynajmniej na Ubuntu 18.04 działającym na WSL).
— astraujums

Jeśli masz sekwencję poleceń między a cd some/pathi a cd -lub cd "${return_wd}"coś podobnego, rozważ zgrupowanie poleceń między nimi w funkcję i użyj podpowłoki, takiej jak (cd some/path; your_commands_here). Nawigacja po katalogu z powrotem do starego PWD jest domniemana na końcu podpowłoki. Działa również w przypadku zastępowania poleceń.
— user4642212

Odpowiedzi:


142

Możesz dodać

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

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

u góry każdego skryptu. Jest to prawdopodobnie minimalna ilość pracy potrzebna do rozwiązania Twojego problemu.


Dokładnie to, czego potrzebowałem ... Dziękuję!
— RonzyFonzy

Jeśli chcesz również wyciszyć błędy (np. Nie ma takiego katalogu), możesz użyć &>zamiast>
— MattSturgeon

4
Zachowaj ostrożność podczas wyciszania błędów: możesz później stworzyć trudną do zdiagnozowania awarię. Sprawdź, czy kod zwrotny jest nieprawidłowy i odpowiednio na niego odpowiedz.
— David Spillett

1
@ xdevs23 || exit $?jest odpowiednikiem just || exit. To samo dotyczy return.
— user4642212

1
@bmacnaughton Nie ma żadnych wymaganych argumentów; akceptuje -ni całą rodzinę argumentów -Ni +N(dla liczby całkowitej N).
— chepner

3

W swoim pliku .profile (jakkolwiek to się nazywa w twoim systemie) dodaj:

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

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

export pushd popd

13
Wpływa to na cały system ... osobiście nie polecam tego sposobu. .
— Sean83

3

W zsh możesz setopt PUSHDSILENT. Umieść to w swoim ~/.zshrc.


1
Lub użyj popd -q(cicho).
— rxw

5
popd nie ma -qopcji
— MarekN

2
@MarekN: poprzedni komentarz „popd -q” odnosił się do zsh, a nie bash, mimo że pierwotne pytanie zostało oznaczone jako wymagające odpowiedzi bash, a nie zsh.
— b-jazz

1
To miły komentarz lub nawiązanie do odpowiedzi, ale nie stanowi samodzielnej odpowiedzi na pytanie, o które nie chodzi zsh.
— chepner
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.