システムが管理する複数のディレクトリを切り替えるためのクイックコマンドライン方法は何ですか?

システムが管理する複数のディレクトリを切り替えるためのクイックコマンドライン方法は何ですか?

システムが管理する複数のディレクトリを切り替えるためのクイックコマンドライン方法は何ですか?私の言葉は、pushd .andを使ってpopd切り替えることができますが、スタックの一番下から永久に取り出すのではなく、複数を保存して繰り返すにはどうすればよいですか?

ベストアンサー1

bashpushdに内蔵+そして-オプションはディレクトリスタックを回転させることができます。構文は多少混乱する可能性があります。おそらく、スタックが次のようになるからです。若い配列に基づいています。これらの単純なラッパー関数はディレクトリスタックを繰り返します。

# cd to next     directory in stack (left  rotate)
ncd(){ pushd +1 > /dev/null ; }
# cd to previous directory in stack (right rotate)
pcd(){ pushd -0 > /dev/null ; }

テスト:4つのディレクトリスタックを設定します。

dirs -c   # clear directory stack
cd /home ; pushd /etc ; pushd /bin ; pushd /tmp

/tmpは現在のディレクトリであり、スタックは次のとおりです。

/tmp /bin /etc /home

スタックの次のディレクトリに4回変更して表示します。

ncd ; pwd ; ncd ; pwd ; ncd ; pwd ; ncd ; pwd

出力:

/bin
/etc
/home
/tmp

スタックの前のディレクトリに4回変更して表示します。

pcd ; pwd ; pcd ; pwd ; pcd ; pwd ; pcd ; pwd

出力:

/home
/etc
/bin
/tmp

についてcd -ワイルドカード回答ヘルプでは、cd -使用しない方法について説明します。$DISTACK配列(これは$OLDPW変数)cd -影響を与えないように$DISTACKスタックベースの交換はこのように行わなければなりません。この問題を解決するには、次の簡単な方法を使用してください。$DISTACK- ベース交換機能:

scd() { { pushd ${DIRSTACK[1]} ; popd -n +2 ; } > /dev/null ; }

テスト:

dirs -c; cd /tmp; \
pushd /bin; \
pushd /etc; \
pushd /lib; \
pushd /home; \
scd; dirs; scd; dirs

出力:

/bin /tmp
/etc /bin /tmp
/lib /etc /bin /tmp
/home /lib /etc /bin /tmp
/lib /home /etc /bin /tmp
/home /lib /etc /bin /tmp

おすすめ記事