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


92

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

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

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


2
誰かが1回の発生を黙らしたいこの質問に出くわした場合は、交換することができるpushdとpopdしてcdとcd ~-。~-あるチルダ展開は、に設定していること$ 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.