複数のbashスクリプトにまたがってpushd / popdスタックを表示しない(静かなpushd / popd)


92

pushdまたはpopdを使用するたびに、スタックを標準出力に出力します。どうしてそうしないのですか?

pushd > /dev/nullお互いを呼び出すスクリプトがたくさんあるので、毎回やりたくありません。

たぶんいいオーバーライドでそれができるかもしれませんが、私はこれらのビルトインを自分のスクリプトでのみオーバーライドして、正しい動作を復元する必要があります。


2
誰かが1回の発生を黙らしたいこの質問に出くわした場合は、交換することができるpushdpopdしてcdcd ~-~-あるチルダ展開は、に設定していること$ OLDPWD
アグスティンラド

@AgustínLado cd -も機能します。どのバージョンが幅広いシステムとより互換性があるかは不明です。
Shiplu Mokaddim

1
@ShipluMokaddim:チルダがないと、フォルダー名が出力されます(少なくとも、WSLで実行されているUbuntu 18.04では)。
astraujums

回答:


132

追加できます

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

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

各スクリプトの先頭に。これはおそらく、問題を解決するために必要な最小限の作業です。


まさに私が必要としたもの...ありがとうございます!
RonzyFonzy

エラー(たとえば、そのようなディレクトリがない)も消音したい場合は、&>代わりに使用できます>
MattSturgeon

4
エラーを抑止するときは注意してください。後日、診断が困難な障害を作成する可能性があります。OKでない戻りコードを確認し、それに応じて応答してください。
David Spillett、

これは最も侵襲性の低いオプションです。
PuzzledVacuum

set -e両方の関数の最初とset +e最後に、またはset -eスクリプトの最初に追加して、終了コード!= 0が検出された場合にスクリプトを終了できます。これはシバンでも機能し#!/bin/bash -eます。出典:gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
xdevs23

4

zshではできますsetopt PUSHDSILENT。これをあなたの中に入れてください~/.zshrc


1
またはpopd -q(静か)を使用します。
rxw

4
popdには-qオプションがありません
MarekN

1
@MarekN:「popd -q」の以前のコメントは、元の質問がzshではなくbashの回答を求めているとタグ付けされていたとしても、bashではなくzshを参照していました。
b-jazz

これは良いコメントまたは回答の接線ですが、質問していない質問への単独の回答ではありませんzsh
chepner

3

.profileファイル(システムで呼び出されるもの)に次を追加します。

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

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

export pushd popd

12
これはシステム全体に影響します...個人的には、この方法はお勧めしません。。
Sean83 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.