ディレクトリ・木構造・パス
この節では、ファイルシステムの基本概念を最低限説明します。ターミナルを扱ううえでは避けて通れないので、腹くくって読んでください。
ディレクトリ
ファイルを格納する「フォルダ」は、ソフトウェアの世界では一般に「ディレクトリ」と呼ばれます。
ターミナルでは一般に、末尾に / があるものはディレクトリとして表示されます。
以降は、「フォルダ」ではなく「ディレクトリ」という名称を用います。
ホームディレクトリ
ターミナルで、~ や ~/ のように表されるディレクトリに遭遇したかもしれません。これをホームディレクトリといい、ユーザーごとに自由に読み書きするファイルをしまうための基点のディレクトリとなります。SSH も、ログインユーザーのホームディレクトリに接続します。
木構造
理学部の研究室に所属している学生の情報を、ファイル名に番号を含む .txt で管理しているシステムがあるとしましょう。次のような構造を想定できるでしょう:
rigaku/
├── physics/
├── chemistry/
│ ├── kinou/
│ │ ├── student1.txt
│ │ └── student2.txt
│ ├── kouchiku/
│ ├── kouzou/
│ │ └── student1.txt
│ └── hanki/
└── biosciences/
コンピュータは、以上の図式のように、あるディレクトリを基点としてサブディレクトリやファイルが枝葉のように連なっていくシステムでファイルを管理しています。これを木構造といいます。
パス
上の図で kinou/の student1.txt の場所を指定したいとしましょう。このとき、木構造を根からたどっていくことで、
rigaku/chemistry/kinou/student1.txt
という文字列を組めば、所望のファイルの場所を一意に指定することができることに気づくはずです(単に student1.txt とするだけではいけません。少なくとも、kouzou/ ディレクトリにも同名のファイルがあるからです)。
ディレクトリを指定したい場合も同様です。例えば、physics/ を指定したかったら、
rigaku/physics/
とします。
このように、木構造にしたがってファイルやディレクトリを指定する文字列のことをパスといいます。
絶対パス・相対パス
以上で説明したパスの書き方は冗長です。通常は、ターミナルが現在参照しているディレクトリを基点としてパスを構築します。そのようなパスを相対パスといい、上で説明したような書き方は絶対パスと呼ばれます。
例えば、上の図でターミナルが chemistry/ を参照しているとしましょう。このとき、kinou/student1.txt を指定したければ、
./kinou/student1.txt
とします。つまり、./ が現在参照しているディレクトリを表すわけです。
chemistry/ を基点として biosciences/ を参照するには、1つ上の階層を経由する必要があります。この場合、
../biosciences/
とします。よって、../ は、1つ上のディレクトリ(親)を参照します。
この節のまとめ
- 「ディレクトリ」は「フォルダ」のことです。
- ファイルやディレクトリを一意に指定するには、木構造にしたがってパスを構築します。
- パスは通常、相対パスで指定します。
./は同階層、../は親の階層を参照します。