Subsections

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

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

前節で作成した,ホームディレクトリ (~) 内のディレクトリ/ファイルの 構造を再掲します。

\includegraphics*{10_parentdir.eps}

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

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

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

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

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

以下を順に実行して,このことを確認しましょう。

  1. ホームディレクトリで ls -F を実行して,カレントディレクトリ に,ディレクトリ tmp があることを確認しましょう。

  2. ls コマンドの引数にはディレクトリを指定することができます。 ls tmp を実行してください。 ls -F tmp も試してください。

    ls の引数にディレクトリを指定すると,ls はそのディレクトリ内のファ イル一覧を表示します6

  3. ls の引数として,カレントディレクトリを明示してみます。 ls .(ドット) と ls の結果と比べてください。

    ちゃんと同じになりますね。

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

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

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

    tmpsub には何もありませんね。

  6. ls -a を実行しましょう。

    -a は . で始まるものを含めてファイル名を表示する ls のオプション だったことを思い出してください。

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

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

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

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

    そこで,親ディレクトリの記号 .. を使います。

    cd ..

    エラーメッセージは出ませんね。

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

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

    また,ls -aF の表示では .. も現われました。さらに親ディレクトリ (ホームディレクトリ) に移動するには .. を使うことができます。

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