Windows におけるフォルダに相当するものを, UNIX ではディレクトリ (directory)またはディレクトリファイル (directory file)と呼びます 22。ディレクトリはファイル を格納する器です。 ディレクトリを利用することで,様々なファイルを,その用途別に分類して整理 することができます。
ディレクトリファイルという名称から予想できるとおり,ディレクトリもファイ ルの一種です。これまでに扱ってきたファイルを「通常のファイル」と呼んで, ディレクトリではないことを明示することがあります。
mkdir tmpdir
ディレクトリもファイルの一種なので,ls コマンドで名前を表示できま す。ls を実行してください。
ls -F
ディレクトリの場合にはディレクトリ名の後に / が付加されます。ただ し,この / はディレクトリであることを表す印であって,ディレクトリ 名の一部ではありません。
UNIX で利用できるファイルやディレクトリは,必ずいずれかのディレクトリ内
にあります23。
これまでに幾つかのファイルを作成しましたが,それらはユーザー毎に予め用意
されたディレクトリ内に作成していたのです。そのディレクトリをユーザーの
ホームディレクトリ (home directory) と呼び,記号 ~
で表す
ことがあります。
コマンド操作でファイルやディレクトリを扱うときに必要な概念として,カレントディレクトリ (current directory; current は「現在の」,「現行 の」という意味) 24 があります。カレントディレクトリは文 字通り,現在使っているディレクトリを意味する用語です。
例えば,ls を引数無しで実行して表示されるのは,カレントディレクトリに存 在するファイルの名前です。また,cp や mkdir 等のコマンドに ファイル名やディレクトリ名を与えると,コマンドが処理するのは カレントディレクトリ内のファイルやディレクトリとなります25 。
ユーザーがログインしたときのカレントディレクトリはホームディレクトリです。 これまで,ファイルやディレクトリがホームディレクトリに作成されたのはその ためです。
~
) 以外のディレクトリに存在する
ファイルやディレクトリを操作できます。
カレントディレクトリを変更するコマンドは cd (change directory) です。cd の引数には変更先のディレクトリを指定します。引数を指定しなければ,ホーム ディレクトリがカレントディレクトリになります(ホームディレクトリに戻れま す)。
以下では,上の図に示すように,ホームディレクトリ(~
)に通常のファイ
ル location とディレクトリ tmp を作り,さらにディレクトリ tmp に通常の
ファイル location とディレクトリ tmpsub を作ります。次の点に留意してお
きましょう。
それでは,自分が今どのディレクトリにいるのか(カレントディレクトリがどこ なのか)を常に意識しながら,次の操作をしてください。
echo Here is my home > location正しくできたか,ls と cat で確認してください。
mkdir tmpls コマンドを使って結果を確認してください。
cd tmp何も表示されなければ成功です。
カレントディレクトリである tmp には,まだ何も作っていませんから, 何も表示されません。
ちゃんとホームに帰れましたか? ファイル location の中身を確認してください。
ディレクトリ tmp を削除できませんね。rmdir は中身が空のディレクト リを削除するコマンドだからです。
前節で作成した,ホームディレクトリ (~
) 内のディレクトリ/ファイルの
構造を再掲します。
あるディレクトリの一つ上位のディレクトリを 親ディレクトリ (parent directory)と呼びます。 上の図では,tmpsub の親ディレクトリは tmp で あり,tmp の親ディレクトリは ~ です。 逆に,tmpsub を tmp の子ディレクトリ (child directory)またはサブディレクト リ (subdirectory)と呼びます。tmp は ~ の子ディレクトリです。
カレントディレクトリの子ディレクトリは「カレントディレクトリに存在するディ レクトリ」ですので,第 6.2.2 節で述べたように,ディレクトリ 名をそのままコマンドの引数として指定することができます。 一方,カレントディレクトリ自身や「カレントディレクトリの親ディレクトリ」 をコマンドの引数にしたければ,次の記号を使います。
以下を順に実行して,このことを確認しましょう。
ls の引数にディレクトリを指定すると,ls はそのディレクトリ内のファ イル一覧を表示します26。
ちゃんと同じになりますね。
tmpsub はカレントディレクトリに存在するディレクトリではないので, cd tmpsub だけではうまくいきません。まず tmp に行ってから, tmpsub に行きましょう。
tmpsub には何もありませんね。
-a は . で始まるものを含めてファイル名を表示する ls のオプション だったことを思い出してください。
ls -aFカレントディレクトリ自身とその親ディレクトリの存在が確認できまし たか。
コマンドの引数には,カレントディレクトリに存在するファイル/ディ レクトリ名を指定するのでしたから,これではうまくいきません。
そこで,先ほどの .. を使います。
cd ..
エラーメッセージは出ませんね。
今はちゃんと tmp にいますね。
また,ls -aF の表示では .. も現われました。さらに親ディレクトリ (ホームディレクトリ) に移動するには .. を使うことができます。
では .. を使ってホームディレクトリに戻りましょう。
第4.4節 (p. ) では,mv と cp の引数に
二つのファイル名を与えてファイル名の変更とファイルの複写を行いましたが,
これらの最後の引数に既存のディレクトリ名 directory
を指定すると,mv と cp は次のとおり動作します。
mv の場合,file にディレクトリ名を与えれば, ディレクトリを別のディレクトリに移動することもできます。
mv file directory file を directory に移動する cp file directory file を directory に,同じ名前のファイルとして複写する
以下を試しましょう。
ファイル now が無ければ date > now で作成してください。
ディレクトリ tmp のファイル now は,ホームディレクトリに複写され ましたね。
以上,ファイルやディレクトリの最も基本的な操作法である,カレントディレク トリに存在するファイルの操作や,カレントディレクトリの親および子ディレク トリへのファイル複写や移動の方法について学びました。カレントディレクトリ がどこであるかに拘らず,任意のディレクトリに存在するファイルを操作するこ ともできますが,その方法については後の回で学習します。
コマンド | 機能 |
ls [directory] | カレントディレクトリ(または directory)に存在するファイルの 名前を表示 |
ls -F [directory] | ファイルの種類を表す記号を付加して,カレントディレクトリ(または directory)に存在するファイルの名前を表示 |
ls -a [directory] | ドットで始まるファイルを含めて,カレントディレクトリ(または directory)に存在するファイルの名前を表示 |
cd [directory] | カレントディレクトリを directory に変更 (directory を省略した場合はホームディレクトリに変更) |
mkdir directory | directory を作成 |
rmdir directory | 空のディレクトリ directory を削除 |
cp file1 file2 | file1 を file2 に複写 |
cp file directory | file を directory に複写 |
mv file1 file2 | file1 の名前を file2 に変更 |
mv directory1 directory2 | directory1 の名前を directory2 に変更 |
mv file directory | file を directory に移動 |
rm file | file を削除 |
~
)に作成してください。
ファイル kokugo の内容は aiueo とし,ファイル sansu の内容は
1+1=2 としておきましょう。