Lから始まるLinux

2章6話
ディレクトリ指定
2章7話 pushdとpopd
もくじ
2章8話
履歴
pushdpopd
若木 みどり
お兄ちゃん! 同じディレクトリを 何度も行き来していると cd を打つのが 面倒になってくるよ…
若木 しげる
それなら pushdpopd を使おう!
若木 しげる
cd のように カレントディレクトリを 変更するコマンドだけど 追加の機能があるんだ!
スタック
若木 しげる
pushdpopd を使う前に まずは「スタック(stack)」 という言葉を覚えよう!
若木 みどり
それはどういうものなのかな?
若木 しげる
複数の情報を蓄えておける 構造のことなんだ
若木 しげる
スタックは 「積まれたお皿」 似ているよ
若木 みどり
積まれたお皿?
若木 しげる
積まれたお皿があって そこに新しい皿を 追加するとき みどりはどうするかな?
若木 みどり
積まれたお皿の一番上に 新しいお皿を乗せるよ!
若木 しげる
じゃあ逆に積まれたお皿から お皿を一枚取り出すときは どうしようか?
若木 みどり
普通だったら 一番上から 一枚取り出すよね?
若木 しげる
このような方法で お皿を出し入れしていると 下のお皿ほど昔に 積まれたものになるよね
若木 みどり
言われてみれば 確かにそうだね
若木 しげる
この「積まれたお皿」 出し入れルールを 「後入れ先出し (last-in first-out, LIFO)」 と呼ぶよ
若木 しげる
そしてその「後入れ先出し」 持つ構造をスタックというんだ
若木 みどり
スタックでは 後に入れたものほど 先に取り出されるんだね!
若木 しげる
スタックの操作には 名前が付いているよ
若木 しげる
スタックに追加する操作を 「プッシュ(push)」 スタックから取り出す操作を 「ポップ(pop)」 と呼ぶんだ
若木 みどり(驚き)
あれ? pushdpopd って もしかして…?
若木 しげる(笑顔)
察しがいいね! pushd は push directory popd は pop directory の略なんだ
pushd コマンド
若木 しげる
pushd ワーキングディレクトリを スタックに入れた上で 指定のディレクトリに移動するよ
若木 しげる
まずは pwd ワーキングディレクトリを 確認しよう!
pwd
若木 みどり
ワーキングディレクトリは現在自分がいるディレクトリのことだよね!
/home/midori
若木 しげる
次に pushd/tmp に移動してみよう!
pushd /tmp
若木 みどり
うん!やってみるね!
/tmp ~
若木 みどり
何かが表示されたよ!たぶんパスかな?
若木 しげる
そのとおり!~ はホームディレクトリだったねみどりの場合は /home/midori だよ
若木 しげる
この表示は~ がスタックにプッシュされ現在 /tmp にいることをあらわしているよ
若木 みどり
最初がワーキングディレクトリで残りがスタックの内容なんだね!
若木 みどり
スタックということは何個も積み重ねられるんだよね?もう一回 pushd を使ったらどうなるのかな?
若木 しげる
それでは pushd を使って/etc に移動してみよう!どんな表示がされるか想像してから実行してみてね
pushd /etc
若木 みどり
こうだとは思うけど…
/etc /tmp ~
若木 みどり
予想どおり!一番右側の /etc現在のディレクトリだよね
若木 みどり
残りはスタックの内容で現在は /tmp~二つのディレクトリが入っているんだね!
popd コマンド
若木 しげる
popdpushd でプッシュしたスタックからディレクトリをポップしてそのディレクトリに移動するよ
若木 しげる
では popd を実行してみよう!
popd
若木 みどり
うん!
/tmp ~
若木 みどり
popd の出力はpushd と同じなんだね一番最初がワーキングディレクトリで残りがスタックの内容なんだ!
若木 しげる
popd を実行した後で pwd を実行しワーキングディレクトリを確認してみよう!
pwd
若木 みどり
やってみる!
/tmp
若木 みどり
今は /tmp にいるよ!pushd の出力のとおりだね!
若木 しげる
現在スタックには ~ だけが残っているねだからもう一度 popd を実行するとホームディレクトリに戻れるよ!
まとめ
若木 みどり
今回は pushdpopd を学んだよ!ワーキングディレクトリをスタックに保存した上で移動し後でそこへ戻れるんだ!
若木 しげる
みどりが最初に悩んでいたように何度も行き来する場合に便利な移動コマンドだよ!