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