技術ノート Linux Linux で Pushd と Popd を使用する方法

Linux で Pushd と Popd を使用する方法

多くの Linux 関係者は、 pushd popd について聞いたことはありませんが、それらは永遠に存在しています。また、コマンド ラインでディレクトリを移動するプロセスを劇的に高速化することもできます。使用方法について説明します。

プッシュとポップとは何ですか?

Bill Joy が 1978 年の C Shell に取り入れた革新の 1 つは、ディレクトリ スタックの概念と、それを操作する手段である pushd popd 。模倣は心からのお世辞であり、ディレクトリ スタック、 pushd popd すぐに他のシェル (Bash など) や他のオペレーティング システムにさえ組み込まれました。

スタックの概念は単純です。項目は一度に 1 つずつスタックに配置され、最後に追加された項目が常に一番上の位置を占めます。アイテムがスタックから取得されると、上から下に順番に削除されます。この性質のスタックは、多くの場合 、後入れ先出し (LIFO) キューと呼ばれます。

実際には、 pushd popd これよりももう少し柔軟性がありますが、これは今のところ覚えておくと良いモデルです。

ここではディレクトリ スタックについて言及しているので、 pushd popd の “d” が “directory” を表すことはおそらく驚くべきことではありません。これらのコマンドを使用すると、ディレクトリをディレクトリ スタックにプッシュしたり、ディレクトリ スタックからポップ オフしたりできます。

しかし、それは私たちにどのような利益をもたらすのでしょうか?

Linux で Pushd と Popd を使用する方法

Pushd がスタックにデータを取り込む方法

pushd 使用すると、次の 3 つのことが起こります。

  • cd を使用した場合と同じようにディレクトリを変更します。
  • ディレクトリの名前とパスがスタックに追加されます。
  • スタックは、スペースで区切られたディレクトリのリストとして表示されます。

次の例では、新しい pushd コマンドごとにディレクトリ スタックがどのように増加するかに注目してください。また、スタックの最上部が左側にあることにも注意してください。ここに新しいエントリが表示されます。

最初の pushd コマンドの後、スタックには、移動したディレクトリと移動したディレクトリの 2 つのエントリが存在します。

この例では、次のように入力します。

 Pushd ~/デスクトップ

Pushd ~/音楽

Pushd ~/ドキュメント

Pushd ~/写真

押した〜

最後の pushd コマンドはホーム ディレクトリに戻ったので、スタック内の最初と最後のエントリはチルダ ( ~ ) で、これがホーム ディレクトリを表します。これは、ディレクトリがすでにスタックに存在しているにもかかわらず、他の pushd コマンドに対して再度追加されることを示しています。

また、スタックの一番左のエントリ (最後に追加されたエントリ) が現在のディレクトリであることにも注意してください。

Linux で Pushd と Popd を使用する方法

dirs コマンド

以下に示すように dirs コマンドを使用して、ディレクトリ スタックを表示できます。

ディレクトリ

スタックには影響せず、表示されるだけです。 pushd で使用できるオプションの一部は、スタック内のディレクトリの位置を参照します。

各ディレクトリの数値位置を確認したい場合は、以下に示すように -v (垂直) オプションを使用できます。

dirs -v

チルダ ( ~ ) の代わりにホーム ディレクトリへのパスを綴り表示したい場合は、次のように -l (長い形式) オプションを追加します。

 dirs -v -l 

Linux で Pushd と Popd を使用する方法

スタックへのディレクトリの追加

これまで見てきたように、 pushd コマンドを使用すると、ディレクトリを変更し、新しいディレクトリをスタックに追加し、スタックを表示するという 3 つの処理が行われます。 -n (ローテーションなし) オプションを使用すると、現在のディレクトリを変更せずにディレクトリをスタックに追加できます。

ディレクトリスタックは次のとおりです。

 dirs -v -l

次に、-n オプションを指定して pushd コマンドを使用し、パラメータとして /home/dave ディレクトリにパスします。次に、ディレクトリ スタックを再度確認します。

次のように入力します。

 Pushd -n /ホーム/デイブ

dirs -v -l

/home/dave ディレクトリは、スタックの 2 番目の場所であるスロット 1 のスタックに追加されました。スロット 0 は常に現在のディレクトリであるため、先頭の位置を占めることはできません。

現在のディレクトリ ~/Videos を離れなかったので、スタック内の別の位置にローテーションされませんでした。

Linux で Pushd と Popd を使用する方法

スタックをローテーションしてディレクトリを変更する

pushd で数値パラメータを使用すると、スタック内の任意のディレクトリに移動でき、その際にスタックが回転します。移動することを選択したディレクトリがスタックの最初のエントリになります。

スタック内のディレクトリは、位置番号によって参照します。スタックの一番上または一番下から数えることができます。 +3 などの正の数の場合は、上から数えます。 -2 などの負の数の場合は、下から数えます。

/home/dave/Documents ディレクトリは 3 番目の位置にあります。次のコマンドを使用して、そのディレクトリを移動できます。

プッシュド+3

選択したディレクトリより上のスタック内のディレクトリは、スタックの一番下に移動されます。選択したディレクトリが最上位を占め、そのディレクトリに移動します。

スタックの一番下にあるディレクトリに変更したい場合は、次のコマンドを使用できます。

プッシュ -0

最後のディレクトリは最初のスロットに移動され、他のディレクトリはすべてスタックの下に移動されます。 ~/Pictures ディレクトリに変更されます。

Linux で Pushd と Popd を使用する方法

Popdコマンド

popd コマンドを使用して、スタックからディレクトリを削除できます。

ディレクトリ スタックを見ると、位置 1 のディレクトリが /home/dave であることがわかります。これをスタックから削除するには、次のように入力して番号を popd に渡します。

 dirs -v -l

ポップド+1

/home/dave ディレクトリが削除され、スタック内でその下にあったディレクトリはそれぞれ 1 つ上の位置に移動しました。

pushd でできるのと同じように、 popd でスタックの一番下から数えることができます。スタックから最後のディレクトリを削除するには、次のように入力します。

ポップ -0

~/Music ディレクトリはスタックの最後の位置から削除されます。

ディレクトリを変更し、何かを行ってから前のディレクトリに戻るには、 pushd popd 一緒に使用できます。

別のディレクトリに移動するには、 pushd を使用します。 popd を使用して、スタック内の最上位のディレクトリを破棄し、2 番目の位置のディレクトリに移動します。これは移動元のディレクトリなので、元のディレクトリに戻ります。

次のように入力します。

押した〜

ポップ

~/Projects ディレクトリから開始し、ホーム ディレクトリに pushd から、 ~/Projects ディレクトリに popd 戻りました。

Linux で Pushd と Popd を使用する方法

スタック全体を回転する

ここでは、いくつかのネストされたディレクトリを含むスタックをローテーションする方法を説明しますが、ファイル システム内の任意の場所にある任意のディレクトリを使用できます。

ネストの最も深いレベルは次のとおりです。

 /ホーム/デイブ/プロジェクト/htg/記事

ホーム ディレクトリから、article ディレクトリに到達するまで、各ディレクトリを徐々に下っていきます。次に、ディレクトリ スタックを見てみましょう。

次のように入力します。

 Pushd ~/プロジェクト

プッシュhtg

プッシュ記事

dirs -v -l

pushd +1 コマンドを繰り返し発行すると、ディレクトリのスタックを何度も繰り返すことができます。これを頻繁に行う場合は、 pushd +1 エイリアス の良い候補になります。

次のように入力します。

プッシュド+1

スタック上のスタンピング

昔の習慣に戻して、 cd 使用してディレクトリを変更するのは簡単です。これを行うと、スタック内の最初のディレクトリをスタンプすることになります。最初のスロットは現在の作業ディレクトリ用に予約されており、他のスロットは位置を変更しないため、これは避けられません。

これを行うには、次のように入力します。

 dirs -v -l

 CD ~/音楽

dirs -v -l


pushd コマンドと popd コマンドに慣れると (おそらく、これらのコマンドを使用していくつかのエイリアスを作成すると)、ディレクトリ間を超高速に移動できるようになります。

これが、私たちが コマンドライン を使い回る理由です。効率は非常に重要ですよね?

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

「 Linux で Pushd と Popd を使用する方法」に関するベスト動画選定!

いつもLinuxにインストールするソフトウェア20選
How To Use The Shell Commands ‘pushd’, ‘popd’ and ‘dirs’