Pushd / popd yığınını birkaç bash komut dosyasında görüntüleme (sessiz pushd / popd)


101

Pushd veya popd'yi her kullandığımda, yığını standart çıktıya yazdırıyor. Bunu nasıl yapmamalı?

pushd > /dev/nullHer seferinde yapmak istemiyorum çünkü birbirini çağıran çok sayıda senaryo var.

Belki güzel bir geçersiz kılma işe yarar, ancak bu yerleşikleri yalnızca betiklerimde geçersiz kılmam ve ardından doğru davranışı geri yüklemem gerekecek.


3
Birisi yerini alabilecek tek bir oluşumunu susturmak isteyen bu soruyu genelinde geldiyse pushdve popdile cdve cd ~-. ~-Bir olan yaklaşık yorumlaması için ayarladığı $ OLDPWD .
Agustín Lado

@ AgustínLado cd -da çalışıyor. Hangi sürümün geniş sistem yelpazesiyle daha uyumlu olduğundan emin değilim.
Shiplu Mokaddim

1
@ShipluMokaddim: Tilde olmadan klasör adını yazdırır (en azından WSL üzerinde çalışan Ubuntu 18.04'te).
astraujums

A cd some/pathve a cd -veya cd "${return_wd}"benzer bir şey arasında bir dizi komutunuz varsa, aradaki komutları bir işleve gruplamayı ve benzer bir alt kabuk kullanmayı düşünün (cd some/path; your_commands_here). Alt kabuğun sonunda eski PWD'ye geri giden dizin navigasyonu ima edilir. Ayrıca komut değişimleri için de çalışır.
user4642212

Yanıtlar:


144

Ekleyebilirsin

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

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

her betiğin en üstüne. Bu, muhtemelen sorununuzu çözmek için gereken minimum iş miktarıdır.


Tam olarak ihtiyacım olan şey ... Teşekkür ederim!
RonzyFonzy

Hataları da susturmak istiyorsanız (örneğin böyle bir dizin yok), &>yerine kullanabilirsiniz>
MattSturgeon

5
Hataları sustururken dikkatli olun: Daha sonraki bir tarihte teşhisi zor bir arıza yaratabilirsiniz. Uygun olmayan bir dönüş kodunu kontrol ettiğinizden ve uygun şekilde yanıtladığınızdan emin olun.
David Spillett

1
@ xdevs23 || exit $?, sadece eşdeğerdir || exit. Aynı return.
user4642212

1
@bmacnaughton Gerekli argümanlar yok; ve (bir tamsayı için ) argümanların -nbütün bir ailesini kabul eder . -N+NN
chepner

3

.Profile dosyanıza (sisteminizde ne denirse) şunu ekleyin:

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

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

export pushd popd

13
Bu tüm sistemi etkiliyor ... şahsen, bu şekilde önermiyorum. .
Sean83

3

Zsh olarak yapabilirsiniz setopt PUSHDSILENT. Bunu ~/.zshrc.


1
Veya popd -q(sessiz) kullanın .
rxw

5
popd -qseçeneği yok
MarekN

2
@MarekN: "popd -q" nin önceki yorumu bash değil, bash değil, zsh'a atıfta bulunuyordu.
b-jazz

1
Bu güzel bir yorum veya bir cevaba teğet, ancak sorulmayan bir soruya bağımsız bir cevap olarak ait değil zsh.
chepner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.