UNIX入門:2. ファイルシステム(FileSystem)
2.1. ファイルの種類
UNIX では,入出力がすべて「ファイル」間で行われていると考えます。しかしながら,便宜上,次の3種類に分けるのが慣例です。
- ファイル (File)
Macintosh や Windows でいうところのファイル。
- ディレクトリ (Directory)
Macintosh や Windows でいうところのフォルダ。ディレクトリは,他のファイルを包含できる特殊なファイル。
- 標準入力,標準出力 (Standard Input, Standard Output)
通常,ターミナル (キーボード) のこと。ターミナルも一つの「ファイル」と考えるわけす (これに従えば,すべてのデバイスもファイル)。各ファイルはディレクトリも含め,固有名をもちますが,入出力に際しファイル名を指定しない場合の入出力先になります。
今後は「ファイル」といった場合,ディレクトリや標準入出力以外の「通常の」ファイルとします。
* ディレクトリやターミナルを「ファイル」と考えるのは,ユーザの側からは屁理屈のようにも感じるかもしれませんね。ただ,開発者にはそういった発想が必要です。理想・理念とその理論の探究なくして,UNIX のような素晴らしい OS は出来上がらなかったかもしれません。
2.2. ディレクトリ構造
ディレクトリの中に他のディレクトリがあるといった具合に,ディレクトリは階層構造をなしています。各ファイルやディレクトリがその階層構造のどこに位置するのか,その表現方法を見ましょう。
- ルート・ディレクトリ (Root Directory)
ディレクトリの階層構造のトップに位置するディレクトリ。ルート・ディレクトリを起点にディレクトリの階層構造は「木」のようになっています。ルート・ディレクトリは,その「木」の「根」。
- パス (Passname)
あるディレクトリ,あるいはファイルが,ディレクトリの階層構造のどの位置にあるかの表現法。その方法は2種類。
- 絶対パス (Absolute Pathname)
ルート・ディレクトリからの位置。UNIX では,スラッシュ (
/
) を用いて階層を表現する。例えば,(ルート・ディレクトリ内の) ディレクトリdir1
内のディレクトリdir2
内のファイルfile
であれば,ファイルfile
の「絶対パス」は,次の通り。/dir1/dir2/file
ルート・ディレクトリの絶対パスは,スラッシュ (
/
) のみ。 - 相対パス (Relative Pathname)
現在作業中のディレクトリからの位置。作業中のディレクトリが上出の
dir1
ならば,先ほどのファイルfile
の「相対パス」は,次の通り。dir2/file
- 絶対パス (Absolute Pathname)
2.3. 作業ディレクトリと個人用のディレクトリ
UNIX はマルチユーザ型なので,各ユーザは個別のディレクトリをもち,その中で作業することになります。
- カレント・ディレクトリ (Current Directory)
作業中のディレクトリのこと。
- ホーム・ディレクトリ (Home Directory)
ログイン (接続) したときのカレント・ディレクトリ。各ユーザは,ログインしたとき,各々別個のディレクトリに入ります。
UNIX はマルチユーザ型なので,すべてのユーザが同じディレクトリ内でファイルやディレクトリを作成し,保存してはお互いに困ってしまいます。各ユーザは,基本的には,各自のホーム・ディレクトリ内で作業するわけです。
また,各ユーザが自らのホーム・ディレクトリ内で作成したファイルの読み込み権,書き込み権,実行権は,そのホーム・ディレクトリの所有者であるそのユーザが行います。
ホーム・ディレクトリは,tilde (
~
) で表現。次のターミナル内の表記(~
部分)は,現在ホームにいるという意味です。[hostname:~] username% ('~'部分が現在ホームにいるという意味)