[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

情報処理IIA(HTML入門)第9回

目次 索引
9.1 ファイルとディレクトリ
9.1.1 ファイルの基本
9.1.2 階層的ディレクトリ
9.1.3 パス名
9.1.4 特別なディレクトリ名
9.2 端末エミュレータ
9.2.1 端末装置
9.2.2 コマンド
9.2.3 オンラインマニュアル
9.3 ファイル管理コマンド
9.3.1 pwdコマンド
9.3.2 lsコマンド
9.3.3 lessコマンド
9.3.4 cdコマンド
9.3.5 cpコマンド
9.3.6 rmコマンド
9.3.7 mvコマンド
9.3.8 mkdirコマンド
9.3.9 rmdirコマンド
9.4 アンケート9
calコマンド  cdコマンド  cpコマンド  dateコマンド  lessコマンド  lsコマンド  manコマンド  mkdirコマンド  mvコマンド  pwdコマンド  rmdirコマンド  rmコマンド  オンラインマニュアル  階層的ディレクトリ  カレントディレクトリ  コマンド  シェル  絶対パス名  相対パス名  ディレクトリ  テキストファイル  バイナリファイル  パス名  引数  ファイル  フォルダ  プロンプト  ホームディレクトリ  ルートディレクトリ 

9.1 ファイルとディレクトリ

9.1.1 ファイルの基本

情報処理Iでは、ファイルとディレクトリ(フォルダ)について学びました。 ここでは、ファイルとディレクトリについて復習します。

ファイルfile )とは、コンピュータシステムにおけるデータ単位の一つです。 ファイルは、バイトデータの列という構造を持ちます。 ファイルには、システム上に永続的に保存できるという特徴があります。

ファイルは、テキストファイルとバイナリファイルの大きく2つに分類されます。 テキストファイルtext file )とは、単にバイトデータの列ではなく、文字符号の列と解釈できるファイルです。 バイナリファイルbinary file )とは、テキストファイルでないファイルです。

これまでに取り扱った中では、HTMLファイルがテキストファイル、画像ファイルがバイナリファイルです。 なお、ワープロソフトの保存ファイルは、一般的にバイナリファイルです。 これは、文字の位置、大きさなどのデータが、文字符号以外で表現され、ファイルに保存されるからです。

ディレクトリdirectory )とは、コンピュータシステムにおけるデータ単位の一つです。 ディレクトリは、ファイルの登録データを保持します。 ファイルと同様、ディレクトリもシステム上に永続的に保存できます。 なお、ディレクトリは、 フォルダfolder )ともよばれます。

ディレクトリを用いますと、ファイルの分類ができます。 何らかの関連性のあるファイルを、同じディレクトリに登録すれば、ファイルを分類したことになります。 ファイルを分類することには、

などの利点があります。

9.1.2 階層的ディレクトリ

実は、ディレクトリには、ファイルだけでなくディレクトリも登録できます。 ディレクトリに(他の)ディレクトリが登録できる機能を、 階層的ディレクトリhierarchical directory )とよびます。 階層的ディレクトリによって、ファイルだけでなく、ディレクトリも分類できます。 つまり、ファイルを分類してディレクトリに登録し、それらのディレクトリを分類してより上位のディレクトリに登録し、さらにそれらのディレクトリを分類してさらに上位のディレクトリに登録し、…ということができるのです。

階層的ディレクトリでは、 ルートディレクトリroot directory )とよばれる特別なディレクトリが用意されます。 すべてのファイルはルートディレクトリに登録されているか、ルートディレクトリに登録されているディレクトリに登録されているか、ルートディレクトリに登録されているディレクトリに登録されているディレクトリに登録されているか、…のいずれかです。

階層的ディレクトリは、木の構造としてとらえると分かりやすくなります。 以下は、木の構造として描かれた階層的ディレクトリの例です。 木の根(図の一番上)がルートディレクトリに対応します。 ルートディレクトリにディレクトリ home や tmp が登録され、ディレクトリ home にディレクトリ b00a や b00c が登録され、…、ディレクトリ ip2a にファイル ex1.html と ex1.html~ が登録されていることを表しています。

                             |
                       +-----+-----+---..
                       |           |
                     home         tmp
                       |           :
                 +-----+-----+---..
                 |           |
               b00a        b00c
                 |           :
           +-----+-----+---..
           |           |
        b00a001     b00a002
           |           :
     +-----+-----+-----------+-----------+
     |           |           |           |
   Mail       Maildir      WABI      WWW-local
     :           :           :           |
           +-----------+-----------+-----+-----+
           |           |           |           |
      index.html  index.html~    ip2a      photo.jpg
                                   |
                             +-----+-----+
                             |           |
                         ex1.html    ex1.html~

9.1.3 パス名

パス名pathname )とは、階層的ディレクトリにあるファイルやディレクトリを参照する名前です。 パス名には絶対パス名と相対パス名があります。 ファイルの 絶対パス名absolute pathname )とは、記号 / から始まり、階層的ディレクトリを表す木の根から順にたどり、そのファイルに至るまでのディレクトリ名とファイル名を、記号 / で区切って書き並べたものです。 ディレクトリの絶対パス名も同様に、記号 / から始まり、木の根からそのディレクトリに至るまでのディレクトリ名を、記号 / で区切って書き並べたものです。 なお、ルートディレクトリは単に / です。

例えば、図の最も下のファイル ex1.html の絶対パス名は

/home/b00a/b00a001/WWW-local/ip2a/ex1.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
                                   |
                             +-----+-----+
                             |           |
                         ex1.html    ex1.html~

例えば、カレントディレクトリが WWW-local であるとき、ファイル ex1.html の相対パス名は ip2a/ex1.html です。 カレントディレクトリが ip2a のときは、単に ex1.html となります。 カレントディレクトリが b00a001 であるとき、ディレクトリ ip2a の相対パス名は WWW-local/ip2a です。 カレントディレクトリが WWW-local のときは、単に ip2a となります。

9.1.4 特別なディレクトリ名

相対パス名が、カレントディレクトリの下にあるファイルやディレクトリしか参照できないように思えますが、特別なディレクトリ名 .. を使えば、カレントディレクトリの上にあるものも参照できます。 ディレクトリ名 .. は、一つ上のディレクトリを意味します。 例えば、カレントディレクトリが ip2a であるとき、ファイル photo.jpg の相対パス名は ../photo.jpg ですし、ディレクトリ b00a001 の相対パス名は ../.. です。

.. の他にも特別なディレクトリ名があります。 以下の表を見てください。 ここで、 ホームディレクトリhome directory )とは、ユーザの個人的な利用のために割り当てられているディレクトリです。 情報処理センターでは、例えば学生番号b00a001のユーザに対しては、ディレクトリ

/home/b00a/b00a001

を割り当てています。 ユーザがログインしますと、ホームディレクトリが最初のカレントディレクトリになります。

表 9.1  特別なディレクトリ名
名前 意味
. カレントディレクトリ
.. 一つ上のディレクトリ
~ 自分のホームディレクトリ
~user ユーザuserのホームディレクトリ

9.2 端末エミュレータ

9.2.1 端末装置

その昔、コンピュータを利用するとき、ユーザはテレタイプとよばれる装置を操作しました。 テレタイプとは、タイプライタに電話がついたようなもので、ユーザが文字をタイプしますと、その文字列が電話回線を通じて遠くのコンピュータに伝わり、今度はコンピュータからの文字列が電話回線を通じてテレタイプに伝わり、紙に印刷されるという仕組みでした。

1回目の授業で用いた端末エミュレータは、このテレタイプのような端末装置のまねをするソフトです。 タイプライタの代りにキーボードとディスプレーを使いますが、文字列のやり取りでコンピュータを操作する点は同じです。

どこにでもパソコンがあり、グラフィカルなウィンドウを見ながらマウスでパソコンが操作できる現在、なぜテレタイプ時代のまねをするのか不思議に思えるでしょう。 端末エミュレータ(端末ソフト)は、以下のような状況では役に立つのです。

9.2.2 コマンド

端末エミュレータの中では、 シェルshell , 具体的には tcsh)とよばれる機能が働いています。 シェルは、ユーザから入力された文字列を解釈し、それに応じたプログラムを実行させます。 シェルを用いますと、コンピュータに登録されているほとんどすべてのプログラムが実行できます。

ここで、端末エミュレータを開きます。 ウィンドウの左下に次のような文字列が表示されているのに注目してください。

b00a001@Ampere:~%

この文字列を プロンプトprompt )といいます。 b00a001 の部分と Ampere の部分は、ユーザとコンピュータによって異なります。 プロンプトの表示は、シェルがユーザからの入力を待っていることを意味します。

次に、入力したい文字列の文字を順にタイプしてください。 間違ってタイプしたときは、Delete キーをタイプすると取り消せます。 Enter キーをタイプすると入力終了となります。

例えば、

b00a001@Ampere:~% xyz
xyz: Command not found.
b00a001@Ampere:~%

シェルに文字列 xyz を入力したわけですが、そのコマンドは見つからないというメッセージが表示されました。 続いて、文字列 date を入力してみます。

b00a001@Ampere:~% date
Thu Jun 13 09:26:49 JST 2002
b00a001@Ampere:~%

今度は、今日の日付と今の時刻が表示されました。

コンピュータに登録されているプログラムには名前がついています。 例えば、今日の日付と今の時刻を出力するプログラムの名前は date です。 シェルは、入力が与えられますと、その文字列をプログラムの名前と見なします。 そして、その名前をある順番にしたがってシステムの中から検索します。 もし見つかれば、その名前のプログラムを実行します。 なければ、コマンドが見つからないというメッセージを表示します。 この例では、xyz という名前が見つからなかったので、コマンドが見つからないと表示され、date という名前が見つかったので、今日の日付と今の時刻が表示されたのです。

実は、シェルへの入力で、プログラムの名前と見なされるのは、空白で区切られた最初の成分だけです。 残りの成分は、そのプログラムへの引数と見なされます。 引数argument )とは、プログラムを実行するときに渡されるデータです。 例えば、カレンダーを出力するプログラム(名前は cal )では、

b00a001@Ampere:~% cal
     2002年  6月
日 月 火 水 木 金 土
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
b00a001@Ampere:~% cal 7 2002
     2002年  7月
日 月 火 水 木 金 土
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

b00a001@Ampere:~%

引数を書かなければ、今月のカレンダーが出力されます。 引数を書きますと、西暦2002年7月というデータがプログラムに渡され、その月のカレンダーが出力されます。

プログラムによっては、必ず引数を書かなくてはいけません。 また、引数の形式もプログラムによってまちまちです。 引数の順序を変えますと、普通はプログラムに異なるデータが渡されます。 例えば、 cal 2002 7 では、西暦7年2002月となります。

プログラムの名前とその引数の並びを、ここでは コマンドcommand )とよぶことにします。 端末エミュレータでは、コマンドを入力することによってコンピュータを操作することになります。 文字列をタイプするのは面倒かもしれませんが、コマンドさえ覚えれば、コンピュータに備わっているほとんどすべての機能を働かせることができるのです。

9.2.3 オンラインマニュアル

プログラムの名前は知っているけれど、何をするものなのか分からないときや、引数の書き方を確認したいときは、マニュアルがすぐに見られれば便利です。 UNIXでは、コマンドでマニュアルが表示できます。 これを、 オンラインマニュアルon-line manual )といいます。

オンラインマニュアルを表示するコマンドは man name です。 ここで、 name はプログラムの名前です。 例えば、

b00a001@Ampere:~% man cal

と入力しますと、cal コマンドのマニュアルが表示されます。 マニュアルを表示しているときのキーボードの割り当ては、以下の表の通りです。

表 9.2  man コマンドにおけるキーボードの割り当て
キーボード 機能
q 表示終了
h ヘルプの表示
Space 一画面分次の表示
Enter 一行分次の表示
b 一画面分前の表示
k 一行分前の表示

9.3 ファイル管理コマンド

情報処理Iでは、ファイルマネージャを用いてファイルの管理をしました。 この授業では、端末エミュレータを用いてファイルの管理をします。 ファイルの管理に関する基本的なコマンドを説明します。

9.3.1 pwdコマンド

pwdコマンド は、カレントディレクトリの絶対パス名を出力します。

例 9.1 
b00a001@Ampere:~% pwd
/home/b00a/b00a001
b00a001@Ampere:~%

9.3.2 lsコマンド

lsコマンド は、引数がなければ、カレントディレクトリの内容を並べて出力します。 引数がディレクトリのパス名ならば、そのディレクトリの内容を並べて出力します。 引数がファイルのパス名ならば、そのパス名を出力します。

例 9.2 
b00a001@Ampere:~% ls
Mail/       Maildir/    WABI/       WWW-local/
b00a001@Ampere:~% ls WWW-local
index.html   index.html~  ip2a/        photo.jpg
b00a001@Ampere:~% ls WWW-local/ip2a
ex1.html   ex1.html~
b00a001@Ampere:~% ls WWW-local/ip2a/ex1.html
WWW-local/ip2a/ex1.html
b00a001@Ampere:~%

9.3.3 lessコマンド

lessコマンド は、ファイルのパス名を引数に取り、そのファイルの内容を表示します。 バイナリファイルは指定しないでください。 表示しているときのキーボードの割り当ては、 man コマンドと同じです。

表 9.3  less コマンドにおけるキーボードの割り当て
キーボード 機能
q 表示終了
h ヘルプの表示
Space 一画面分次の表示
Enter 一行分次の表示
b 一画面分前の表示
k 一行分前の表示

9.3.4 cdコマンド

cdコマンド は、引数がなければカレントディレクトリをホームディレクトリに変更します。 引数がディレクトリのパス名ならば、カレントディレクトリをそのディレクトリに変更します。

例 9.3 
b00a001@Ampere:~% ls
Mail/       Maildir/    WABI/       WWW-local/
b00a001@Ampere:~% cd WWW-local
b00a001@Ampere:~/WWW-local% pwd
/home/b00a/b00a001/WWW-local
b00a001@Ampere:~/WWW-local% cd
b00a001@Ampere:~% pwd
/home/b00a/b00a001
b00a001@Ampere:~%

9.3.5 cpコマンド

cpコマンド には、2つの形式があります。

cp file1 file2

では、パス名 file1 で表されるファイルの内容を、パス名 file2 で表されるファイルにコピーします。

cp file... directory

では、パス名の並び file... で表される一つ以上のファイルの内容を、パス名 directory で表されるディレクトリの中に、それぞれ同じファイル名でコピーします。

もしコピー先のファイルがすでにあれば、そのファイルに上書きされます。

例 9.4 
b00a001@Ampere:~% ls
Mail/       Maildir/    WABI/       WWW-local/
b00a001@Ampere:~% ls WWW-local
index.html   index.html~  ip2a/        photo.jpg
b00a001@Ampere:~% cd WWW-local/ip2a
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~
b00a001@Ampere:~/WWW-local/ip2a% cp ex1.html test.txt
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  test.txt
b00a001@Ampere:~/WWW-local/ip2a%

9.3.6 rmコマンド

rmコマンド は、ファイルのパス名を引数に取り、そのファイルを消去します。

例 9.5 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  test.txt
b00a001@Ampere:~/WWW-local/ip2a% rm test.txt
rm: test.txt を消去しますか (yes/no)? yes
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~
b00a001@Ampere:~/WWW-local/ip2a%

9.3.7 mvコマンド

mvコマンド には、2つの形式があります。

mv file1 file2

では、パス名 file1 で表されるファイルを、パス名 file2 で表されるファイルに移動します。 同じディレクトリの中で移動させますと、ファイル名を変更したことになります。

mv file... directory

では、パス名の並び file... で表される一つ以上のファイルを、パス名 directory で表されるディレクトリの中に移動します。

もし移動先のファイルがすでにあれば、そのファイルに上書きされます。

例 9.6 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~
b00a001@Ampere:~/WWW-local/ip2a% cp ex1.html test2.txt
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  test2.txt
b00a001@Ampere:~/WWW-local/ip2a% mv test2.txt test3.txt
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  test3.txt
b00a001@Ampere:~/WWW-local/ip2a%

9.3.8 mkdirコマンド

mkdirコマンド は、ディレクトリのパス名を引数に取り、その名前のディレクトリを作成します。

例 9.7 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  test3.txt
b00a001@Ampere:~/WWW-local/ip2a% mkdir trial
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  test3.txt  trial/
b00a001@Ampere:~/WWW-local/ip2a% ls trial
b00a001@Ampere:~/WWW-local/ip2a% mv test3.txt trial/test4.txt
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  trial/
b00a001@Ampere:~/WWW-local/ip2a% ls trial
test4.txt
b00a001@Ampere:~/WWW-local/ip2a%

9.3.9 rmdirコマンド

rmdirコマンド は、ディレクトリのパス名を引数に取り、そのディレクトリを消去します。 ディレクトリが消去できるのは、その中にファイルもディレクトリもなく、カレントディレクトリがそのディレクトリより上であるときに限ります。

例 9.8 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~  trial/
b00a001@Ampere:~/WWW-local/ip2a% ls trial
test4.txt
b00a001@Ampere:~/WWW-local/ip2a% rm trial/test4.txt
rm: trial/test4.txt を消去しますか (yes/no)? yes
b00a001@Ampere:~/WWW-local/ip2a% ls trial
b00a001@Ampere:~/WWW-local/ip2a% rmdir trial
b00a001@Ampere:~/WWW-local/ip2a% ls
ex1.html   ex1.html~
b00a001@Ampere:~/WWW-local/ip2a%

9.4 アンケート9

今日は、レポート課題を出す代りに、授業内容に関するアンケートを行います。 以下の質問に答え、回答をkonishi@twcu.ac.jpあてにメールで送ってください。 メールには、学生番号、氏名、科目名、授業の日付け(6/13)を明記してください。 アンケートに回答すれば、今日の授業に出席したものと見なします。

  1. 小売店に勤めているA子は、1月から8月までの売上データをそれぞれファイル jan.dat, feb.dat, mar.dat, apr.dat, may.dat, jun.dat, jul.dat, および aug.dat にまとめました。 そして、ディレクトリを使ってこれらのファイルを分類しようと考えました。 ディレクトリの中のファイルやディレクトリはなるべく少ない方がよいと思い、それは2つにまで減らせることに気づいたA子は、次のような階層的ディレクトリを構成しました。
                                jan-aug
                                   |
                   +---------------+---------------+
                   |                               |
                jan-apr                         may-aug
                   |                               |
           +-------+-------+               +-------+-------+
           |               |               |               |
        jan-feb         mar-apr         may-jun         jul-aug
           |               |               |               |
       +---+---+       +---+---+       +---+---+       +---+---+
       |       |       |       |       |       |       |       |
    jan.dat feb.dat mar.dat apr.dat may.dat jun.dat jul.dat aug.dat
    A子のディレクトリの使い方が適切か否かについて、自由に議論してください。

[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2002年6月22日更新
konishi@twcu.ac.jp
Copyright (C) 2002 Zenjiro Konishi. All rights reserved.