ディレクトリ2

ディレクトリ間の移動

ディレクトリの構成が複雑になってきた時、各ディレクトリの間をいったりきたりするのが面倒になってくる。 そのような時に、なるべく簡単にすばやくディレクトリ間を移動するには cd の代わりにスタックを利用する以下のコマンドを使用すると良い。

pushd (パス名)
スタックの一番上にパスを追加する。
pushd
一番上と二番目のパスを交換する。
pushd +(スタック番号)
スタック番号のパスをスタックの一番上に積む。
popd
スタックの一番上からパスを削除する。
popd +(スタック番号)
スタック番号のパスを削除する。
dirs
スタックの内容を表示。
dirs -v と実行すると、スタック番号が左に表示されて判りやすい表示になる。
cd -
直前にいたディレクトリにもどる。

これらのコマンドを使用すると、 = によってファイルなどのコピー・移動を簡単に行なうことができるようになる。
つまり = の後にスタック番号をつけると、そのスタックに入っているディレクトリを表すことができるので、いちいち長いパス名を入力する必要が無くなる。

スタックとは

ここでスタックとはパス名をいれておくための底のある入れもの(バケツのようなもの)と思えば良い。

  1. 最初は現在のディレクトリ(カレントディレクトリ)を表すパス名が底に入っている。
    (スタック番号0 : dir1)
    [スタックの状態1]
  2. pushd dir2でパス名(dir2)をスタックに入れると、それはスタックの底にある現在のディレクトリの上に積まれる。
    そして、スタックの1番上にあるパス(dir2)が現在のディレクトリになる。
    (スタック番号0 : dir2, スタック番号1 : dir1)
    [スタックの状態2]
  3. その後で、もう一度pushd dir3で別のパス名(dir3)をスタックに入れると、そのパス名がスタックの上に積まれる。 (カレントディレクトリはdir3)
    (スタック番号0 : dir3, スタック番号1 : dir2, スタック番号2 : dir1)
    [スタックの状態3]
  4. pushdだけを実行すると、スタックの上から1番目と2番目が入れ換えられる。 (カレントディレクトリはdir2)
    (スタック番号0 : dir2, スタック番号1 : dir3, スタック番号2 : dir1)
    [スタックの状態4]
  5. popdを実行すると、スタックの1番上にあるパスが除かれる。 (カレントディレクトリはdir3)
    (スタック番号0 : dir3, スタック番号1 : dir1)
    [スタックの状態5]

使用例

前回の課題で作られた kadai1, kadai2, kadai1-1, ... などのディレクトリが存在するとして以下のようにコマンドを実行してみよう。
[kadaiディレクトリの構成図]
以下の例にでてくる ~ はホームディレクトリを表す。

% cd unix
% pwd
/amt/home0/ad010000/unix
% cd kadai1/kadai1-1
% pwd
/amt/home0/ad010000/unix/kadai1/kadai1-1
% dirs
~/unix/kadai1/kadai1-1      ← スタックには一つだけディレクトリが入っている
% pushd ../../kadai2/kadai2-2     ← 二つ目のディレクトリをスタックに積む
~/unix/kadai2/kadai2-2 ~/unix/kadai1/kadai1-1
% dirs -v
0       ~/unix/kadai2/kadai2-2    ← スタックの一番上に積まれているディレクトリ
1       ~/unix/kadai1/kadai1-1    ← スタックの二番目に積まれているディレクトリ
% pushd            ← スタックの一番目と二番目を入れ換える
~/unix/kadai1/kadai1-1 ~/unix/kadai2/kadai2-2
% pwd
/amt/home0/ad010000/unix/kadai1/kadai1-1
% pushd            ← スタックの一番目と二番目を入れ換える
~/unix/kadai2/kadai2-2 ~/unix/kadai1/kadai1-1
% pwd
/amt/home0/ad010000/unix/kadai2/kadai2-2
% pushd ~          ← 三つ目のディレクトリとしてホームディレクトリをスタックに積む
~ ~/unix/kadai2/kadai2-2 ~/unix/kadai1/kadai1-1
% dirs -v
0       ~    ← スタックの一番上に積まれているディレクトリ
1       ~/unix/kadai2/kadai2-2    ← スタックの二番目に積まれているディレクトリ
2       ~/unix/kadai1/kadai1-1    ← スタックの三番目に積まれているディレクトリ
% cd unix/kadai1
% dirs -v
0       ~/unix/kadai1
1       ~/unix/kadai2/kadai2-2
2       ~/unix/kadai1/kadai1-1
% pushd ../kadai2
~/unix/kadai2 ~/unix/kadai1 ~/unix/kadai2/kadai2-2 ~/unix/kadai1/kadai1-1
% dirs -v
0       ~/unix/kadai2
1       ~/unix/kadai1
2       ~/unix/kadai2/kadai2-2
3       ~/unix/kadai1/kadai1-1
% pushd +3         ← スタックの四番目に積まれているディレクトリに移動
~/unix/kadai1/kadai1-1 ~/unix/kadai2 ~/unix/kadai1 ~/unix/kadai2/kadai2-2
% dirs -v
0       ~/unix/kadai1/kadai1-1
1       ~/unix/kadai2
2       ~/unix/kadai1
3       ~/unix/kadai2/kadai2-2
% ls
data1-1         ← ~/unix/kadai1/kadai1-1 にあるファイル
% cp data1-1 =3    ← data1-1をスタックの四番目にあるディレクトリ(~/unix/kadai2/kadai2-2)にコピー
% pushd +3         ← スタックの四番目に積まれているディレクトリに移動
~/unix/kadai2/kadai2-2 ~/unix/kadai1/kadai1-1 ~/unix/kadai2 ~/unix/kadai1
% dirs -v
0       ~/unix/kadai2/kadai2-2
1       ~/unix/kadai1/kadai1-1
2       ~/unix/kadai2
3       ~/unix/kadai1
% ls
data1-1 data2-2         ← ~/unix/kadai2/kadai2-2 にあるファイル

練習課題

参考


Prev | Next
Home | Contents
abe@injapan.net