Subsections

3.2 カレントディレクトリと親ディレクトリの操作

3.2.1 親ディレクトリと子ディレクトリ

図 2は,前節の 3.1.1 で作成した, ホームディレクトリ (~) 内のディレクトリ/ファイルの構造を, 再度示したものです。
図 2: 親ディレクトリと子ディレクトリ
\includegraphics[clip]{10_parentdir.eps}

あるディレクトリの一つ上位のディレクトリを 親ディレクトリ (parent directory)と呼びます。 図 2では,tmpsub の親ディレクトリは tmp であり, tmp の親ディレクトリは ~ です。 逆に,tmpsub を tmp の子ディレクトリ (child directory)またはサブディレクト リ (subdirectory)と呼びます。tmp は ~ の子ディレクトリです。

3.2.2 カレントディレクトリと親ディレクトリの指定法 -- ``.'' と ``..''

カレントディレクトリの子ディレクトリは 「カレントディレクトリに存在するディレクトリ」です。 そのため,第 2.2 節で述べたとおり, 子ディレクトリの名前をそのままコマンドの引数として指定すれば, それがコマンドの処理対象となります。

一方,カレントディレクトリ自身や 「カレントディレクトリの親ディレクトリ」は, カレントディレクトリに存在するディレクトリではありません。 したがって, ディレクトリ名をコマンドの引数に与えても, コマンドの処理対象にはなりません。 これらをコマンドの引数にしたければ,次の記号を使います。

. (ドット)
: カレントディレクトリ自身
.. (ドット二つ)
: カレンディレクトリの親ディレクトリ

3.2.3 練習

  1. カレントディレクトリを,図 2の tmpsub に変更してください。

    tmpsub はカレントディレクトリに存在するディレクトリではないので, cd tmpsub だけではうまくいきません。 まず tmp に移ってから,tmpsub に移りましょう。

  2. tmpsub (カレントディレクトリ)に存在するファイルを ls コマンドで調べましょう。

    何も表示されませんね。

  3. ls に -F と -a の二つのオプションを付けて実行してみましょう。 ls に複数のオプションを付けるときには, それらを -aF のようにまとめて書くことができます。
    ls -aF
    -a は . で始まるものを含めて全てのファイル名を表示する ls のオプションでしたね。 カレントディレクトリ自身とその親ディレクトリの存在を確認できましたか。

  4. カレントディレクトリを,親ディレクトリである tmp に変更します。

    まず,cd tmp を試しましょう。

    コマンドの引数には, カレントディレクトリに存在するファイル/ディレクトリ名を指定するのでしたから,これではうまくいきません。

    そこで,先ほどカレントディレクトリに存在することを確認した, 親ディレクトリの記号 .. を使います。

    cd ..
    エラーメッセージは出ませんね。成功です。

  5. カレントディレクトリの内容を ls -aF で表示してみてください。 loc というファイルが存在するはずですから, ファイルの中を見てください。

    今はちゃんと tmp にいますね。

  6. ls -aF . の結果を予想して,試してください。

    ls の引数に . を指定すると, カレントディレクトリに存在するファイルの一覧が得られます。 したがって,結果は ls -aF と同じです。

  7. ls -aF や ls -aF . の表示では .. も現われましたから, 親ディレクトリ (ホームディレクトリ) の指定には, 再度 .. を使うことができます。

    ls コマンドの引数に .. を与えて, 親ディレクトリに存在するファイルの一覧を表示してみましょう。

  8. .. を使ってホームディレクトリに戻りましょう。