ディレクトリ構造を理解しよう
Linuxでどのようにファイルが管理されているのでしょうか? その前に、インストール直後の状態のLinuxのファイル構造がどうなっているのか理解する必要があります。ここではディレクトリ(directory)について理解することにしましょう。
学問的には「区分編成ファイル」と呼ばれています。ですが、実際にこの呼称で呼ぶ人はいません。ディレクトリといいます。ディレクトリはWindowsでいうところのフォルダに相当します。つまり、ファイルをカテゴリわけするために作る、引き出しの仕切りみたいなものです。Linuxの場合元をたどればすべて「/(ルート)」と呼ばれるディレクトリにたどり着くようになっています。Linuxにはドライブという概念が存在しないため、Cドライブがどうとか、CD-ROMドライブがどうとかといったことがありません。後述になりますが、これら外部記憶装置もディレクトリとして操作することになります。
さて、元をたどればすべて「/」にたどりつくということですが、逆に言うとどんどん枝分かれしていくということになります。こういったものをツリー構造体とかいいますが、「ルート(root)」のもともとの意味は「根っこ」です。図のように根のようにディレクトリが分かれています。それぞれのディレクトリには役割が決まっていますが、ひとまずこれらはWindowsのように特殊な意味が存在するものではないと考えてかまいません。Linuxの習慣的なもので図のように意味づけされているのです。
各ディレクトリには当然名前が付いています。あくまでLinux上で管理するだけのルールなのですが、日本語のようなマルチバイトの文字、つまり全角文字や「my directory」のようにスペースが入る名前は付けてはいけませんし、そのようになってるようなディレクトリはありません。これも後述になりますが、ディレクトリはコマンドと一緒に指定するのですが、コマンドを扱うときにスペースがとても重要な意味を持つのです。なので、紛らわしいスペースを使ってはいけません。使えないわけではないのですが。
そこで次に理解しなければならないのはパス(path)の表現方法です。パスはその意味の通り、これらツリー構造のディレクトリをどういうルートでたどっているかというものです。これを文字列だけで表現します。そこで、「/(ルート)」が重要な役割をします。
私が最初にLinuxを触ったとき、まったく何もわからなかったので、いつでもパスの表現は「/my_dir/tools」とかしていました。ですがこれはエラーになります。実は先頭に「/」をつけると「/(ルート)」からの絶対参照になります。絶対参照(絶対パス)とは、常に元になるパスから指定することです。この方法は、構造さえ理解していれば、絶対にその場所にたどりつけることが保障されています。常に「/」から始まるため、絶対(absolute)になるわけです。それとは反対に相対参照(相対パス)という指定方法があります。これは自分が今参照しているディレクトリからどう見るかです。ツリー構造の図で説明すると、もし今あなたが「webmaster」というディレクトリにいて、「kernel」までたどりつきたいとします。その場合は「../../etc/kernel/」となります。この「../」は自分の一つ上の階層を意味します。これを繰り返すことで、目的のディレクトリを参照します。これはそのディレクトリからの構造をよく理解しておかなければならない(つまり自分より上の階層がどういう構造になっているかがわかりにくい)という欠点はあるものの、自分より上の階層のディレクトリ名が変わっていても参照が可能、つまりフレキシブルな方法だといえます。これは実際にウェブサイトやプログラムを作っている人ならよくお分かりだと思います。ちなみ相対参照には自分自身のディレクトリを意味する書き方もあります。「./」と書いて、「カレントディレクトリ」と詠んだりします。例えば「../../etc/kernel/」は「./../../etc/kernel/」と同じ意味になります。