今日のテーマは、ファイルとディレクトリです。 UNIXの場合について説明しますが、ほとんどの内容は、WindowsにもMacにも通用します。
最初の授業で注意した通り、 フォルダ と ディレクトリ は同じものです。 WindowsとMacではフォルダと言い、UNIXではディレクトリと言います。 この授業はUNIXなので、ディレクトリと言うことにします。
ディレクトリを使えば、ファイルの分類ができます。 つまり、関連性のあるファイルを、同じディレクトリに登録するのです。 ディレクトリでファイルを分類すると、
などのメリットがあります。
きちんと分類しておけば、ファイルはすぐに見つけられます。 また、探しているファイルがないことも、すぐに分かります。
関連性のあるファイルをまとめて移動したり、コピーしたりすることは、よく行われます。 それらを同じディレクトリにまとめておけば、そのディレクトリを移動したり、コピーするだけで、済んでしまいます。
一つのディレクトリの中では、違うファイルに同じファイル名は付けられません。 しかし、違うディレクトリの中なら、同じファイル名が付けられます。 他のディレクトリのファイルは気にせずに、ファイル名が付けられるのです。
ディレクトリには、ファイルを登録するだけではなく、他のディレクトリも登録できます。 このような、ファイルとディレクトリの仕組みを、 階層的ファイル・システム と呼びます。
階層的ファイル・システムは、まず、 ルート・ディレクトリ と呼ばれるディレクトリから始まります。 ルート・ディレクトリには、いくつかのファイルやディレクトリが登録されます。 それらのディレクトリには、さらにいくつかのファイルやディレクトリが登録されます。 それらのディレクトリには、また、さらにいくつかのファイルやディレクトリが登録されます。 このようにして、ファイルとディレクトリが構成されるのです。
ここで、次の指示にしたがって、ディレクトリを作成してください。 ディレクトリの作成は、コマンドでもできますが、ここではFinderを使います。
階層的ファイル・システムは、しばしば木の形で表現されます。 ただし、自然界の木とは上下が逆で、根本が上にあり、枝は下に伸びます。 根本はルート・ディレクトリを表し、枝分れや枝の先はファイルやディレクトリを表します。
先ほど作成したファイルとディレクトリを木で表しますと、次のようになります。
| +----+----+---... | | Applications Users : | +----+----+---... | | b08a001 b08a002 | : +----+----+---------+---... | | | Desktop Documents comp2d : : | +-------------+-------------+-------------+---... | | | France Germany test02.txt | | +------+------+ +------+------+ | | | | Lyon.txt Marseille.txt Frankfurt.txt Hamburg.txt
なお、学生番号のディレクトリは、その人のホーム・ディレクトリです。 ホーム・ディレクトリ とは、利用者が自由に利用できるディレクトリであることを、思い出してください。
パス名 とは、階層的ファイル・システムにおいて、ファイルやディレクトリの位置関係を表すものです。 パス名には、絶対パス名と相対パス名があります。
絶対パス名 とは、ルート・ディレクトリから出発し、目的のファイルやディレクトリに到着するまで、ディレクトリ名を書き並べたものです。 絶対パス名の最初は"/"で、最後は目的のファイル名やディレクトリ名です。
例えば、ファイルLyon.txtの絶対パス名は、
/Users/b08a001/comp2d/France/Lyon.txt
です。 ディレクトリGermanyの絶対パス名は、
/Users/b08a001/comp2d/Germany
です。
ホーム・ディレクトリの絶対パス名は、/Users/b08a001です。 ルート・ディレクトリの絶対パス名が、"/"となることに注意してください。
相対パス名 とは、基準となるディレクトリから出発し、目的のファイルやディレクトリに到着するまで、ディレクトリ名を書き並べたものです。 相対パス名の最後は目的のファイル名やディレクトリ名です。
例えば、ホーム・ディレクトリ/Users/b08a001を基準としますと、ファイルHamburg.txtの相対パス名は、
comp2d/Germany/Hamburg.txt
です。 ディレクトリFranceの相対パス名は、
comp2d/France
です。
基準ディレクトリに登録されているファイルについては、その相対パス名はファイル名だけになります。 同様に、基準ディレクトリに登録されているディレクトリについては、その相対パス名はディレクトリ名だけになります。
なお、パス名の書き方は、Windows, Mac, UNIXの間で少し異なります。 違うのは、区切り記号です。
OS | パス名 |
---|---|
Windows | C:\dir1\dir2\dir3 |
Mac | :dir1:dir2:dir3 |
UNIX | /dir1/dir2/dir3 |
これまで、色々なコマンドを紹介してきました。 その中には、引数にファイル名を書いたものもありました。 実は、そのようなコマンドでは、ファイル名の代わりにパス名が書けます。
例えば、ファイルの内容を表示するコマンドcatなら、次のようになります。
asiaa1:~/comp2d b08a001$ cat /Users/b08a001/comp2d/France/Marseille.txt マルセイユはフランスの都市です。 asiaa1:~/comp2d b08a001$
コマンドの引数には、絶対パス名だけではなく、相対パス名も書けます。 そのためには、基準ディレクトリを知る必要があります。 シェルでは、基準ディレクトリのことを、 カレント・ディレクトリ と呼びます。
pwdコマンドを紹介したとき、このコマンドが表示したのは、カレント・ディレクトリの絶対パス名です。
asiaa1:~/comp2d b08a001$ pwd /Users/b08a001/comp2d asiaa1:~/comp2d b08a001$
シェルの最初のカレント・ディレクトリは、普通はホーム・ディレクトリです。
例えば、ファイルFrankfurt.txtの内容を表示するには、次のように相対パス名を書きます。
asiaa1:~/comp2d b08a001$ pwd /Users/b04a001/comp2d asiaa1:~/comp2d b08a001$ cat Germany/Frankfurt.txt フランクフルトはドイツの都市です。 asiaa1:~/comp2d b08a001$
例えば、ディレクトリUKの中にディレクトリScotlandを作成したいとします。 つまり、作成したいのは、ディレクトリ
/Users/b08a001/comp2d/UK/Scotland
です。 これをmkdirコマンドで一気に作成すると失敗します。
asiaa1:~/comp2d b08a001$ pwd /Users/b04a001/comp2d asiaa1:~/comp2d b08a001$ mkdir UK/Scotland mkdir: UK: No such file or directory asiaa1:~/comp2d b08a001$
ディレクトリを一つ一つ作成すると、うまくいきます。
asiaa1:~/comp2d b08a001$ pwd /Users/b04a001/comp2d asiaa1:~/comp2d b08a001$ mkdir UK asiaa1:~/comp2d b08a001$ mkdir UK/Scotland asiaa1:~/comp2d b08a001$
カレント・ディレクトリを変更する方法もあります。
asiaa1:~/comp2d b08a001$ pwd /Users/b04a001/comp2d asiaa1:~/comp2d b08a001$ mkdir UK asiaa1:~/comp2d b08a001$ cd UK asiaa1:~/comp2d/UK b08a001$ mkdir Scotland asiaa1:~/comp2d/UK b08a001$ cd .. asiaa1:~/comp2d b08a001$
コマンドを使って適切なディレクトリを作成し、Jeditを使って適切なファイルを作成・保存して、以下の通りのコマンド操作ができるようにしてください。 適切でなければ、"No such file or directory"のようなメッセージが表示されてしまいます。 学生番号は、自分のものに読み替えてください。
asiaa1:~/comp2d b08a001$ cat /Users/b08a001/comp2d/USA/California/LosAngeles.txt ロサンゼルスは米国カリフォルニア州の都市です。 asiaa1:~/comp2d b08a001$ cat /Users/b04a001/comp2d/USA/Florida/Miami.txt マイアミは米国フロリダ州の都市です。 asiaa1:~/comp2d b08a001$
今日の演習4の答案(「ターミナル」画面のコピー)をメールで提出してください。 差出人は学内のメール・アドレス(b08a001@cis.twcu.ac.jpなど)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(10月17日)を明記してください。