UNIX 入門 3

OS 基礎演習∼No.4
UNIX 入門 3
1.ファイルシステムの概要
コンピュータが用いる情報は「ファイル」に格納されている。文書もプログラムも編集するテキストも、
全てファイルに保存される。ここでは、UNIX システムにおいてファイルがどこに保管され、どのように管
理されているかについてまとめる。これらを制御する仕組みは OS によって異なっているが、それらを「フ
ァイルシステム」と呼ぶ。ファイルにはそれぞれ異なる名前が付けられ、ハードディスク等に保存されるの
が普通である。ファイルに付けられる名前を「ファイル名」という。ディスクには多数のファイルが保管さ
れるので、それら 個々のファイルのありか・場所を管理する仕組みが必要になる 。一般的には、ディスクを
小さなユニットやサブユニットに分け、それぞれに名前を付けて該当する情報をそれらの中に保管する。
UNIX のファイルシステムもこれと同じ手法を用いている。コンピュータで処理している間、ファイルは
RAM(メインメモリ )上にロードされている。RAM は揮発性なので1、電源を切れば内容が消えてしまう。
そこで 、ファイルはハードディスクなど不揮発性の他の外部記憶装置上に保存されるのが普通である。UNIX
では、ハードディスクを多数のユニット(これを「ディレクトリ」と呼ぶ)やサブユニット(これを「サブ・
ディレクトリ 」と呼ぶ)に分ける。各ユニット(ファイルの置き場)に付けられる名前を「ディレクトリ名」
という。
2.ディレクトリとその構造
2−1
ツリー構造
ディレクトリは「ファイルを入れておく箱(場所)」のようなものであり、Windows の「フォルダ」に相
当する。UNIX のディレクトリ構造は、いくつものレベルからなる階層構造を持っている。この階層構造は、
ツリー 構造をなしている。階層構造の最も上の階層に位置するディレクトリは、ルートディレクトリと呼ば
れる。ルートは「/(スラッシュ)」で表記する。ルートディレクトリは、1 つの UNIX システムにただ 1 つ
だけ存在し、他の全てのディレクトリやファイルは、全てルートディレクトリの下に枝分かれした形で作成
される(図 1)
。ディレクトリは、ファイルの内容に関する情報は含んでいないが、代わりにファイルを保管
したり、そこにたどりつくまでの参照パスを提供したりする。
/
/etc
/usr
/var
/tmp
/home
/makino
/home00
/ohtsuka
/yourID
ディレクトリ
/www
file1
/www
ファイル
index.html
図1
1
file1
file2
index.html
ディレクトリのツリー構造
一方、不揮発性(電源を切っても内容が消えない)のメモリを ROM という。
1
OS 基礎演習∼No.4
2−2
ホームディレクトリ
UNIX では各自がログインして使用するためのアカウントが登録されている。ユーザがログイン後、各ア
カウントが自由にファイルを置いたり、ディレクトリ を作成したりできる特別なディレクトリが割り当てら
れている。これをホームディレクトリ と呼ぶ。ホームディレクトリの場所は、管理者により 割り当てられて
おり、ログインするシステムによって異なる。図 1 の事例では、makino という アカウントには/home/makino
と い う 場 所 ( デ ィ レ ク ト リ ) が 、 ohtsuka に は /home/ohtsuka が 、 yourID と い う ア カ ウ ン ト に は
/home00/yourID が割り当てられていると考えればよい。
Tips:本学でのホームディレクトリの場所
本学では各人のホームディレクトリは次の場所に割り当てられている。
•
学生用 Web サーバ(www.cs.reitaku-u.ac.jp)では、2005 年度入学生の場合、ルートディレクトリの下
の「home05」ディレクトリ (/home05)以下に各人のログイン名で作成されている。
例えば、foo さんの場合「/home05/foo」となる2。
•
Linux 3では、Windows でのホーム領域(F ドライブ)と同じ場所に割り当てられている。
2−3
カレントディレクトリ(ワーキングディレクトリ)
UNIX システムを使っているとき、ユーザは常にあるディレクトリ上で作業をしていることになる。今現
在作業しているディレクトリを、カレントディレクトリ(現在ディレクトリ)
、または、ワーキングディレク
トリ(作業ディレクトリ)という。
ログイン直後の状態では、ホームディレクトリ=カレントディレクトリになっている。
カレントディレクトリ の場所は「pwd」コマンドで表示することができる。
また、「cd」コマンドをオプションなしで利用するとホームディレクトリに戻れる(図2)
。
pwd コマンド
pwd コマンド の実行
カレントディレクトリ(/home/smaki)
カレントディレクトリ (/home/smaki)が表示された
が表示された
cd コマンドの利用。
cd とだけ 打って Enter を押すと、ホームディレクトリに戻る
図2
2−4
pwd コマンド と cd コマンドの利用
パス名(絶対パス名と相対パス名)
あるディレクトリ やファイルを指す文字列をパス名と呼ぶ。パス名によりファイルシステム 内の位置が特
定されることになる。パス名の付け方には、ルートディレクトリ を基準とする方法と、カレントディレクト
リを基準とする方法とがある。前者を絶対パス名と呼び、後者を相対パス名と呼ぶ。
授業では、仮想端末(telnet 画面)に表示されるプロンプトの後に、文字で命令(コマンド)を入力する
ことにより UNIX システムを操作するので、操作対象となるディレクトリやファイルは文字列により与えな
2
3
「/homeXX」の「XX」部分に、入学年度(西暦の下 2 桁)が入ると思えばよい。
Linux の使用については別の機会に学習する予定。
2
OS 基礎演習∼No.4
ければならない。例えば、ファイルをコピーする場合、コピー元ファイル名、コピー先ファイル名を指定せ
ねばならないが、ファイルがカレントディレクトリにある 場合以外は、パス名を合わせて指定する必要があ
ることになる。
<NOTE>
1. パス名の先頭のスラッシュ(/)は、ルートディレクトリ を表す。
2. これ以外のスラッシュは、ディレクトリ名やファイル名の区切りを表す。
3. ワーキングディレクトリの直下にあるファイルはファイル名だけで操作できる。
4. 他のディレクトリにあるファイルを操作するためにはパス名を指定せねばならない。
5. ホームディレクトリのパス名は、チルダ(~)で代用できる。例えば、図1のディレクトリ構造がある
とき、makino というログイン名に対して考える。この場合、ホームディレクトリ 「/home/makino」
直下にある file1 のパス名は「~makino/file1」である 4。自分のログイン名は省略可能なので 、単に
「~/file1」と表記してもよい。
■絶対パス名
絶対パス名(完全パス名ともいう)は、対象とするディレクトリ やファイルを、ルートディレクトリを起
点とする道筋で指定する。書式は、ルートディレクトリを先頭の「/」で表し、以降の階層でたどるべき ディ
レクトリの名前を、順に「/」で区切って一連の文字列としたものである。つまり、絶対パス名は常にルート
ディレクトリ名であるスラッシュ(/)で始まる。
例えば、
図 1 における「yourID」ディレクトリの下の
「www」ディレクトリの下にあるファイル「index.html」
への絶対パス名は、
「/home00/yourID/www/index.html」となる。絶対パス名を用いると 、カレントディレ
クトリがどこであったとしても、操作対象とするディレクトリやファイルを直接指定することができる。
<NOTE>
1. 絶対パス名はファイルのある 場所を厳密に指定する。従って、カレントディレクトリがどこであって
も絶対パス名を使えばそのファイルの位置を正確に示すことができる。
2. 絶対パス名は常にルートディレクトリから始まるので、パス名の先頭には必ずスラッシュ(/)がある。
■相対パス名
相対パス名では、カレントディレクトリを起点とする道筋を用いる。
カレントディレクトリ は「.」で表される。また、あるディレクトリの 1 つ上の階層のディレクトリ(親デ
ィレクトリ)は「..」で表わされる。これを用い、カレントディレクトリから対象ディレクトリやファイルへ
のたどり方を、順に「/」で区切った一連の文字列とする。
例えば、図 1 においてカレントディレクトリが「yourID」であったときに 、その下のディレクトリ「www」
にあるファイル「index.html」を相対パス名で指定する場合には、「./www/index.html」となる。また、カ
レントディレクトリが「ohtsuka」であったときに、ディレクトリ「makino」の下のディレクトリ「www」
にあるファイル「index.html」を相対パス名で指定する場合には、
「../makino/www/index.html」となる 。
<NOTE>
1. 相対パス名の先頭にはスラッシュ(/)は必要ない。
2. 相対パス名の出発点は常にカレントディレクトリである。
他の人のホームディレクトリを「~ログイン名/」で表すことも可能。例えば、ログイン名 ohtsuka ならば「~ohtsuka/」
と表記できる。ログイン名 yourID なら「~yourID」である。
4
3
OS 基礎演習∼No.4
3. カレントディレクトリは、ピリオド(.)で示すことができる。例えば、図1でカレントディレクトリ
が makino の場合、file1 の相対パス名は「./file1」となる5。
なお、カレントディレクトリ の「./」は省略可能なので、単に「file1」でもよい。
4. カレントディレクトリ の「1つ上」のディレクトリは、ピリオド・ピリオド(..)で示すことができる。
例えば、図1でカレントディレクトリが makino の場合、
「../」は/home と同義になる。
2−5
ファイル名・ディレクトリ名の付け方
ディレクトリやファイルの名前には、原則として半角英数字を使用する。UNIX では、半角英字の大文字
と小文字は区別される。ハイフン「-」やアンダースコア「_」、ピリオド「.」といった半角記号も使用可能で
あるが、他の多くは UNIX 上で特別な意味を持つため使用できない。これらはシェルが特殊な意味に解釈す
る文字列である。使えない文字列をファイル名に付けようとすると、シェルはそれをコマンドの一部と解釈
してしまう。例えば、以下のような文字列はファイル名やディレクトリ名に使えない。
<NOTE>
<>
不等号
()
左右のカッコ
[]
左右の大カッコ
{}
左右の中カッコ
*
アスタリスク
「全て」を表す文字列になる
?
疑問符
「ある 1 文字」を表す文字列 になる
”, ’
ダブルクォート,シングルクォート
`
バッククォート
/
スラッシュ
スペース
ファイルのリダイレクト(別途学習する)の意味になる
パス名の区切りとして使用
コマンドの区切りとして扱われる
日本語(全角文字)名が使用できる場合もあるが、それもトラブルの原因となることが多く、UNIX 上で
は使用しない方が無難である。
5
「./file1」の意味は、「今いる場所(カレントディレクトリ)の下にある file1 というファイル」と考えればよい。
4