最後の値を削除せずにpopdを使用する


8

popd実際にスタックから最後のディレクトリをポップせずに、使用の動作を取得するにはどうすればよいですか?言い換えれば、で設定した最後のディレクトリに戻りpushdたいのですが、スタックの一番上にとどまって、次popdは同じディレクトリに移動します(まだ一番上にあります)スタック)。


「cd-」は機能しませんか?私が理解している場合、シーケンスは「pushd d1; pushd d2; pushd d3;」です。では、d2に戻りましょう。
tpb261

cd -動作しcdますが、準備ができるまで他に行かない場合に限りますpopd。私は通常、戻る準備ができる前にいくつかの場所に跳ね回ります
Freedom_Ben

それは明らかです。しかし、どういうわけか私はあなたの質問の暗黙の「バウンスアラウンド」の部分を逃しました。
tpb261 2018

回答:


2

どうですか: cd "$(dirs -l -p | sed -n '2{p;q}')"


素晴らしいありがとう!私がこれまでに見たことがあれば、それはいくつかのbash-fuです。私はそのコマンドのエイリアスpeekd(C ++ STLっぽくて覚えやすい)にしたので、入力peekdするだけで動作を取得できます。 alias peekd='cd "$(dirs -l -p | sed -n '\''2{p;q}'\'')"'
Freedom_Ben 2013

3
@Freedom_Benこれは次のように簡略化できますcd "$(dirs +1)"
Gilles 'SO- stop

@Gillesこれを実行しようとすると、「bash:cd <マイディレクトリ>:そのようなファイルまたはディレクトリはありません」と表示されます。それがなぜか知っていますか?cdは<my directory>をパスとして正しく解釈していませんか?エラーメッセージから、それはうまくいくはずです。つまり、<my directory>は正しいように見え、単に「cd <my directory>」と入力しても機能します。
nukeguy 2016

1
@nukeguy <my directory>チルダで始まりますか?上記の私のコメントには-l~省略形を使用するのではなく、ディレクトリ全体を一覧表示するオプションがありませんでした。それはそうあるべきですcd "(dirs -l +1)"
ジル 'SO-邪悪なことをやめなさい'

@ギレスはい!それがまさに私が探していたものです、ありがとう!おそらく、コメントを別のソリューションとして投稿する必要があります-私の意見では、これはこのスレッドで最も一般的で便利なオプションです。
nukeguy 2016

10

引数なしでpushdすると、スタックの上位2つのエントリが入れ替わり、それらの間で効果的にcdを実行できます。

d1から始めて、pushd d2を実行すると、d1とd2がスタックに追加され、d2のままになります。引数なしでもう一度pushdを実行すると、d1とd2がスタック上で逆になったd1に戻ります。


6

私が正しく理解している場合、あなたは可能性がpushd .直後にpopdそのpop編ディレクトリスタックの一番上に再び配置されます。


これは非常に簡単でエレガントなソリューションです。ありがとう!
Freedom_Ben 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.