目次 | 索引 |
---|---|
情報処理Iでは、ファイルとディレクトリ(フォルダ)について学びました。 ここでは、ファイルとディレクトリについて復習します。
ファイル ( file )とは、コンピュータシステムにおけるデータ単位の一つです。 ファイルは、バイトデータの列という構造を持ちます。 ファイルには、システム上に永続的に保存できるという特徴があります。
ファイルは、テキストファイルとバイナリファイルの大きく2つに分類されます。 テキストファイル ( text file )とは、単にバイトデータの列ではなく、文字符号の列と解釈できるファイルです。 バイナリファイル ( binary file )とは、テキストファイルでないファイルです。
これまでに取り扱った中では、HTMLファイルがテキストファイルです。 また、GIF, JPEG, PNGなどのイメージ・ファイルがバイナリファイルです。 なお、Microsoft Wordなどのワープロソフトの保存ファイルは、一般的にバイナリファイルです。 これは、文字の位置、大きさなどのデータが、文字符号以外で表現され、ファイルに保存されるからです。
ファイルには、管理のために名前がつきます。 これを ファイル名 ( file name )とよびます。 ファイル名はファイルを区別するための名前ですので、異なるファイルに同じファイル名をつけることはできません。 ただし、後で説明しますが、ディレクトリが異なればこの限りではありません。
ファイル名は比較的自由につけられますが、普通は
name . ext
という形式が用いられます。 この ext の部分は 拡張子 ( extension )とよばれます。 拡張子は、ファイルの種類を連想させる目印です。 これまでに取り扱った中では、HTMLファイルのファイル名を 〜.html としました。 また、PNGファイルのファイル名を 〜.png としました。
ファイルの管理情報はファイル名だけではありません。 ここでは、端末エミュレータを利用して、ファイルの管理情報を確認することにします。
いつもの要領で、授業用ディレクトリに練習用のファイル ex8.html を作成し、その内容を"Good afternoon!"としてください。 そして、端末エミュレータを開き、次のように入力します。
b00a001@Ampere:~% cd WWW-local b00a001@Ampere:~/WWW-local% cd ip2a b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html -rw-r--r-- 1 b00a001 school 15 5月 29日 13:31 ex8.html b00a001@Ampere:~/WWW-local/ip2a%
はじめの cd WWW-local と cd ip2a は、後で説明しますが、授業用ディレクトリに移動するという意味です。 続く ls -l ex8.html が、ファイル ex8.html の管理情報を表示するという意味です。 つまり、
ls -l filename
で、ファイル filename の管理情報が表示されます(LiSt Long format)。
出力の中で、左から5番目のデータは、ファイルのサイズを意味します。 この場合は、15バイトということです。 実際、"Good afternoon!"は15文字であり、英数字は1文字1バイトで表現できますので、確かに15バイトになるわけです。 その次のデータは、ファイルの最終変更日時です。 このファイルはまだ変更されていませんが、その場合は作成日時が最終変更日時と見なされます。
それでは、このファイルを変更してみます。 内容を"Good afternoon!"から"Good-bye!"に変更してください。 そして、端末エミュレータで再び管理情報を表示します。
b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html -rw-r--r-- 1 b00a001 school 9 5月 29日 13:40 ex8.html b00a001@Ampere:~/WWW-local/ip2a%
ファイルのサイズが9バイトに変わり、最終変更日時も新しくなったことが確認できます。
ディレクトリ ( directory )とは、コンピュータシステムにおけるデータ単位の一つです。 ディレクトリは、ファイルの登録データを保持します。 ファイルと同様、ディレクトリもシステム上に永続的に保存できます。 なお、ディレクトリは、 フォルダ ( folder )ともよばれます。
ディレクトリを用いますと、ファイルの分類ができます。 何らかの関連性のあるファイルを、同じディレクトリに登録すれば、ファイルを分類したことになります。 ファイルを分類することには、
などの利点があります。
以前、異なるファイルに同じファイル名はつけられないと説明しましたが、これは一つのディレクトリの中での話です。 ファイルが別々のディレクトリの中にあるのでしたら、それらに同じファイル名をつけることができます。 同じ名前のファイルは、ファイル名では区別できませんが、ディレクトリの名前で区別できるのです。
実は、ディレクトリには、ファイルだけでなくディレクトリも登録できます。 (ファイルとディレクトリを混在させることもできますし、ファイルもディレクトリもない空の状態にもできます。) ディレクトリに(他の)ディレクトリが登録できる機能を、 階層的ディレクトリ ( hierarchical directory )とよびます。 階層的ディレクトリによって、ファイルだけでなく、ディレクトリも分類できます。 つまり、ファイルを分類してディレクトリに登録し、それらのディレクトリを分類してより上位のディレクトリに登録し、さらにそれらのディレクトリを分類してさらに上位のディレクトリに登録し、…ということができるのです。
階層的ディレクトリでは、 ルートディレクトリ ( root directory )とよばれる特別なディレクトリが用意されます。 すべてのファイルはルートディレクトリに登録されているか、ルートディレクトリに登録されているディレクトリに登録されているか、ルートディレクトリに登録されているディレクトリに登録されているディレクトリに登録されているか、…のいずれかです。
階層的ディレクトリは、木の構造としてとらえると分かりやすくなります。 以下は、木の構造として描かれた階層的ディレクトリの例です。 木の根(図の一番上)がルートディレクトリに対応します。 ルートディレクトリにディレクトリ home や tmp が登録され、ディレクトリ home にディレクトリ b00a や b00c が登録され、…、ディレクトリ ip2a にファイル ex8.html と ex8.html~ が登録されていることを表しています。
| +-----+-----+---.. | | home tmp | : +-----+-----+---.. | | b00a b00c | : +-----+-----+---.. | | b00a001 b00a002 | : +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local : : : | +-----------+-----------+-----+-----+ | | | | index.html index.html~ ip2a photo.jpg | +-----+-----+ | | ex8.html ex8.html~
パス名 ( pathname )とは、階層的ディレクトリにあるファイルやディレクトリを参照する名前です。 パス名には絶対パス名と相対パス名があります。 ファイルの 絶対パス名 ( absolute pathname )とは、記号 / から始まり、階層的ディレクトリを表す木の根から順にたどり、そのファイルに至るまでのディレクトリ名とファイル名を、記号 / で区切って書き並べたものです。 ディレクトリの絶対パス名も同様に、記号 / から始まり、木の根からそのディレクトリに至るまでのディレクトリ名を、記号 / で区切って書き並べたものです。 なお、ルートディレクトリは単に / です。
例えば、図の最も下のファイル ex8.html の絶対パス名は
/home/b00a/b00a001/WWW-local/ip2a/ex8.html
です。 また、下から2段目のファイル index.html の絶対パス名は
/home/b00a/b00a001/WWW-local/index.html
です。 ディレクトリ ip2a の絶対パス名は
/home/b00a/b00a001/WWW-local/ip2a
です。
絶対パス名を用いますと、階層的ディレクトリにあるファイルやディレクトリが確実に参照できます。 しかし、いちいち木の根からディレクトリ名を書き並べるのは大変です。 ファイルの 相対パス名 ( relative pathname )とは、木の根からではなく、カレントディレクトリから順にたどり、そのファイルに至るまでのディレクトリ名とファイル名を、記号 / で区切って書き並べたものです。 ここで カレントディレクトリ ( current directory )とは、その時の操作の基準となるディレクトリです。 ディレクトリの相対パス名も同様に、カレントディレクトリから順にたどり、そのディレクトリに至るまでのディレクトリ名を、記号 / で区切って書き並べたものです。 先頭に記号 / がつかないことに注意してください。
: | b00a001 | +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local : : : | +-----------+-----------+-----+-----+ | | | | index.html index.html~ ip2a photo.jpg | +-----+-----+ | | ex8.html ex8.html~
例えば、カレントディレクトリが WWW-local であるとき、ファイル ex8.html の相対パス名は ip2a/ex8.html です。 カレントディレクトリが ip2a のときは、単に ex8.html となります。 カレントディレクトリが b00a001 であるとき、ディレクトリ ip2a の相対パス名は WWW-local/ip2a です。 カレントディレクトリが WWW-local のときは、単に ip2a となります。
相対パス名が、カレントディレクトリの下にあるファイルやディレクトリしか参照できないように思えますが、特別なディレクトリ名 .. を使えば、カレントディレクトリの上にあるものも参照できます。 ディレクトリ名 .. は、一つ上のディレクトリを意味します。 例えば、カレントディレクトリが ip2a であるとき、ファイル photo.jpg の相対パス名は ../photo.jpg ですし、ディレクトリ b00a001 の相対パス名は ../.. です。
.. の他にも特別なディレクトリ名があります。 以下の表を見てください。 ここで、 ホームディレクトリ ( home directory )とは、ユーザ(システムの利用者)の個人的な利用のために割り当てられているディレクトリです。 情報処理センターでは、例えば学生番号b00a001のユーザに対しては、ディレクトリ
/home/b00a/b00a001
を割り当てています。 ユーザがログインしますと、ホームディレクトリが最初のカレントディレクトリになります。
名前 | 意味 |
---|---|
. | カレントディレクトリ |
.. | 一つ上のディレクトリ |
~ | 自分のホームディレクトリ |
~user | ユーザuserのホームディレクトリ |
それでは、端末エミュレータを利用して、ディレクトリの移動と内容確認を行います。 今は次のようになっていると思います。
b00a001@Ampere:~% cd WWW-local b00a001@Ampere:~/WWW-local% cd ip2a b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html -rw-r--r-- 1 b00a001 school 15 5月 29日 13:31 ex8.html b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html -rw-r--r-- 1 b00a001 school 9 5月 29日 13:40 ex8.html b00a001@Ampere:~/WWW-local/ip2a%
はじめの cd WWW-local は、カレントディレクトリを WWW-local に変更するという意味です。 次の cd ip2a は、カレントディレクトリを ip2a に変更するという意味です。 つまり、
cd dirname
で、カレントディレクトリがディレクトリ dirname に変更されます(Change Directory)。 ファイル ex8.html の管理情報を確認するために、カレントディレクトリを b00a001 → WWW-local → ip2a と移動させたことを、次の図で理解してください。
: | b00a001 | +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local : : : | +-----------+-----------+-----+-----+ | | | | index.html index.html~ ip2a photo.jpg | +-----+-----+ | | ex8.html ex8.html~
ここで、カレントディレクトリの内容を確認してみます。
ls
で、カレントディレクトリの内容がリストアップされます(LiSt)。 出力されるのは、ファイルやディレクトリの名前です。 この授業で作成したファイルがあることを確認してください。
b00a001@Ampere:~/WWW-local/ip2a% ls ex1.html ex2.html~ ex4.html ex5.html~ ex7.html ex8.html~ ex1.html~ ex3.html ex4.html~ ex6.html ex7.html~ ex2.html ex3.html~ ex5.html ex6.html~ ex8.html b00a001@Ampere:~/WWW-local/ip2a%
続いて、受信メールが格納されているディレクトリに移動して、その内容を確認してみます。 その前に、カレントディレクトリをホームディレクトリに戻します。 一つ上のディレクトリを表す特別な名前 .. を指定して、カレントディレクトリを二つ上にします。
b00a001@Ampere:~/WWW-local/ip2a% cd .. b00a001@Ampere:~/WWW-local% cd .. b00a001@Ampere:~%
そして、 ls でカレントディレクトリの内容を確認しながら、受信メールが格納されているディレクトリに移動します。 次の図を見ながら、カレントディレクトリを b00a001 → Mail → inbox と移動させることを理解してください。 ディレクトリ inbox の内容は、ファイル 1 は1番のメール、ファイル 2 は2番のメール、…となっています。 なお、センターの設定では、ディレクトリの名前は右にスラッシュ(/)が付くことによって、ファイル名と区別できるようになっています。
b00a001@Ampere:~% ls Mail/ Maildir/ WABI/ WWW-local/ b00a001@Ampere:~% cd Mail b00a001@Ampere:~/Mail% ls aliases context drafts/ inbox/ b00a001@Ampere:~/Mail% cd inbox b00a001@Ampere:~/Mail/inbox% ls 1 11 13 15 17 19 20 3 5 7 9 10 12 14 16 18 2 21 4 6 8 b00a001@Ampere:~/Mail/inbox% cd .. b00a001@Ampere:~/Mail% cd .. b00a001@Ampere:~%
: | b00a001 | +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local | : : : +-----+-----+-----------+-----------+ | | | | aliases context drafts inbox | +-----+-----+ | | 1 2
ちなみに、ファイルを指定せずに
ls -l
としますと、カレントディレクトリの内容すべてについて管理情報が表示されます。 この方法で、ディレクトリの管理情報が確認できます。
b00a001@Ampere:~% ls -l 合計 55 drwx------ 5 b00a001 other 512 4月 3日 03:07 Mail/ drwx------ 5 b00a001 other 512 4月 3日 03:08 Maildir/ drwxrwxrwx 5 root other 512 4月 3日 03:09 WABI/ drwxr-xr-x 3 b00a001 school 512 7月 13日 10:04 WWW-local/ b00a001@Ampere:~%
今皆さんが使っているシステムはUNIXとよばれているものの一種です。 UNIXを特徴付ける性質として、 マルチユーザシステム ( multi-user system )であることがあげられます。 マルチユーザシステムとは、複数の人が利用するための機能を備えたシステムのことです。 マルチユーザシステムの機能のおかげで、同じコンピュータを使っているにもかかわらず、
などといった保護がなされています。 ここでは、この保護機能について説明します。
UNIXでは、すべてのファイルとディレクトリに 所有者 ( owner )があります。 つまり、ファイルとディレクトリは必ず誰かのものだということです。 ファイルやディレクトリの所有者は、前述の
ls -l filename
や
ls -l
を用いると確認できます。
b00a001@Ampere:~% cd WWW-local b00a001@Ampere:~/WWW-local% cd ip2a b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html -rw-r--r-- 1 b00a001 school 9 5月 29日 13:40 ex8.html b00a001@Ampere:~/WWW-local/ip2a%
このうち、左から3番目のデータが所有者を示します。 つまり、ファイル ex8.html はユーザ b00a001 のものだということです。
なお、左から4番目のデータは所有グループを示します。 グループ ( group )とは、システム管理者が定めたユーザの集まりです。
前述の、友達の作ったホームページ(HTMLファイル)が読めるけれど書き換えできない理由は、システムが友達であるユーザに読む権利を与え、書く権利を与えなかったからです。 このような権利を、 アクセス権 ( permission )とよびます。
ファイルに対しては、次の3種類のアクセス権があります。
ここで、実行権はプログラムなどのファイルを想定しています。
ディレクトリに対しては、次の3種類のアクセス権があります。
これらのアクセス権が、所有者に対して、所有グループのユーザに対して、そしてその他のユーザに対して定まっています。 つまり、アクセス権は全部で9個あるわけです。 この9個をまとめてアクセス権モードとよびます。
もう一度、ファイルの管理情報を確認してみます。
b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html -rw-r--r-- 1 b00a001 school 9 5月 29日 13:40 ex8.html b00a001@Ampere:~/WWW-local/ip2a%
一番左の10文字からなる文字列の、2文字目から10文字目までがアクセス権モードを示しています。 2, 3, 4文字目が所有者に対するr, w, xアクセス権、5, 6, 7文字目が所有グループのユーザに対するr, w, xアクセス権、8, 9, 10文字目がその他のユーザに対するr, w, xアクセス権です。 マイナス(-)は権利なしを意味します。
この場合ですと、ファイル ex8.html は、読み取りは誰でもできるが、書き込みは所有者のみできるということです。
次に、メール用ディレクトリに移動して、1番のメールの管理情報を表示します。
b00a001@Ampere:~/WWW-local/ip2a% cd .. b00a001@Ampere:~/WWW-local% cd .. b00a001@Ampere:~% cd Mail b00a001@Ampere:~/Mail% cd inbox b00a001@Ampere:~/Mail/inbox% ls -l 1 -rw------- 1 b00a001 school 1482 4月 13日 10:25 1 b00a001@Ampere:~/Mail/inbox%
ファイル 1 は、読み取りと書き込みは所有者のみできるということです。
これではじめの保護機能が説明できます。 ホームページ(HTMLファイル)ex8.html は、すべてのユーザに読み取り権が与えられていますので、友達も読めるのですが、書き込み権は所有者のみですので、友達は書き換えられないのです。 また、1番のメール 1 は、所有者以外にアクセス権が与えられていませんので、友達は読むことすらできないのです。
UNIXでは、 スーパーユーザ ( super-user )とよばれる特別なユーザが存在します。 スーパーユーザのユーザ名は、通常 root ですので、ルートともよばれます。
スーパーユーザはアクセス権を超えた存在で、システムに関するあらゆる権利を持っています。 たとえファイルのアクセス権モードが 000(所有者すら読み書きできない)であっても、スーパーユーザなら読んだり書いたりできます。
システム管理者の業務のひとつに、ユーザの登録や削除があります。 管理者は、必要に応じてスーパーユーザに切り替わり、新入生に必要なファイルを用意したり、卒業生のファイルを抹消したりしているのです。
ファイルとディレクトリについて、以下の問いに答えなさい。 ここで、ディレクトリとフォルダは同義語とします。
問1. 次の中からテキストファイルを選びなさい。
問2. コマンド ls -l test.html を実行したところ、
-rw-r--r-- 1 b00a001 school 23 4月 10日 10:05 test.html
という出力があったとします。 この"23"は何を意味するか、次から適切なものを選びなさい。
問3. コマンド ls -l test.html を実行したところ、
-rw-r--r-- 1 b00a001 school 23 4月 10日 10:05 test.html
という出力があったとします。 この"4 月 10 日 10:05"は何を意味するか、次から適切なものを選びなさい。
問4. 同じファイル名を持つファイルが複数作成できるかどうかについて、次から適切な説明を選びなさい。
問5. 階層的ディレクトリは、しばしば木の構造で表現されますが、この根にあたる部分は何とよばれますか。 次から選びなさい。
問6. 階層的ディレクトリに関する説明として適切なものを次から選びなさい。
問7. 図のような階層的ディレクトリにおいて、下から2段目のファイル photo.jpg の絶対パス名として適切なものを次から選びなさい。
| +-----+-----+---.. | | home tmp | : +-----+-----+---.. | | b00a b00c | : +-----+-----+---.. | | b00a001 b00a002 | : +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local : : : | +-----------+-----------+-----+-----+ | | | | index.html index.html~ ip2a photo.jpg | +-----+-----+ | | ex8.html ex8.html~
問8. 図のような階層的ディレクトリにおいて、カレントディレクトリが ip2a であるとき、ファイル index.html の相対パス名として適切なものを次から選びなさい。
: | b00a001 | +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local : : : | +-----------+-----------+-----+-----+ | | | | index.html index.html~ ip2a photo.jpg | +-----+-----+ | | ex8.html ex8.html~
問9. コマンド ls -l test.html を実行したところ、
-rw-r--r-- 1 b00a001 school 23 4月 10日 10:05 test.html
という出力があったとします。 ファイル test.html について次から適切な説明を選びなさい。 (スーパーユーザについては考えないものとします。)
問10. スーパーユーザの説明として適切なものを次から選びなさい。
今日の演習8の解答をkonishi@twcu.ac.jpあてにメールで送ってください。 メールには、学生番号、氏名、科目名、授業の日付け(5/29)を明記してください。