ファイルとディレクトリ(1)

					2006年4月28日
コンピュータリテラシ

                                       筑波大学 電子・情報工学系
                                       コンピュータサイエンス専攻
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2006/2006-04-28
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

2006/04/28 12:03:45
man コマンドに関する宿題を追加しました。
  • 次回5月2日火曜日は、実習室 3C205 に集合。(3A309ではない)
  • 手引き(教育用計算機システム使用の手引き)を持って来る。

    ■復習

    ■補足

    電子メールで名乗りと挨拶。From: を英語にした時の習慣。
    From: Shiro Yagi <shiro@is.tsukuba.ac.jp>
    To: i06012345@coins.tsukuba.ac.jp
    Subject: Re: [coins-computer-literacy-a] Assignment-3, e-mail reply (2006012345)
    Date: Tue, 25 Jan 2006 16:15:25 +0900
    Message-Id: <200604251615.k0NEgPTw003900@azalea20.coins.tsukuba.ac.jp>
    
    コンピュータ・リテラシTAの○○さん
    
    こんにちは。コンピュータ・リテラシの授業を受けている白やぎです。
    4月25日に出された課題の電子メールを提出します。
    
    > この行と次の行だけを引用してください。返信には、このメールを
    > 書いた日付と時刻を入れてください。
    
    2006年4月25日 16:10です。
    
    よろしくお願いします。
    				白やぎ
    

    ■2種類の記憶のための部品

    メモリ(RAM(Random Access Memory))
    実行中のプログラムを保持する。加工するデータを一時的に保持する。 非常に速い。容量は、ハードディスクよりは小さい。値段が高い。 (揮発的(電源を切ると消えてしまう)。)
    ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
    プログラムやデータをデータを保持する。 容量は、メモリより大きい。値段が安い。 (永続的である(電源を切っても残っている)。)

    ファイルとディレクトリは、ハード・ディスクを便利にしたもの。 「永続性」という性質が大事。

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

    ファイル(file)は、コンピュータの中で「情報を保存する」ための仕組み。 ファイルは、ビット列を(バイト単位で)保存する。

    記憶媒体

    単純な記憶媒体の問題

    ファイルの大事な役目は、「情報に名前を付ける」という機能。

    ディレクトリ(directory)は、ファイルに名前を付ける働きを持っている仕掛 けを提供するもの。フォルダ(folder)と呼ばれることもある。

    ディレクトリは、ファイルの名前の一覧表として現れる。

    ファイルの性質

    ■ファイルの基本的な操作

    余談:物を説明するのに、どんな操作ができるかで説明する方法は、オブジェ クト指向、抽象データ型といった用語で語られる。

    ◆ファイル名

    ファイルには、名前(ファイル名(file name))がついている。 ファイルを操作するには、ファイル名を指定する。

    Unix では、ファイル名には、/ 以外の文字が使える。 次の文字は、問題が起きない。 漢字をファイル名に使うことは、符号化の方法の違いで問題が生じる ことがある。

    Unixでは、ファイル名としてアルファベットの大文字と小文字の両方使え、か つ、両者は区別される。普通は小文字を使う。Makefile や README のように、 特に注目して欲しいファイルの名前に大文字を使う。

    MacOSX では、大文字小文字の違いは保存されるが、 区別されないことがある。 abcという名前は、AbcでもABCでも操作できることがある。

    MacOSX の Finder は、ディレクトリの名前を加工して表示する。

    ◆ファイルの名前を調べる(lsコマンド)

    ls コマンドを実行すると、存在するファイルの一覧を表示する。

    % ls [←]
    Desktop         Movies          Public          backupfiles2006
    Documents       Music           Sites           public_html
    Library         Pictures        WinFiles
    % []
    

    ◆内容によるファイルの分類

    テキスト・ファイル(text file)
    文字データだけが含まれているファイル
  • バイナリ・ファイル(binary file)
    その他、機械語、画像、音声
  • ◆テキスト・ファイルの作成

    echoコマンドで、1行のテキストファイルを作成できる。
    % echo This is a pen. > file1 [←]
    % []
    
    > は、シェルの入出力の切り替え(リダイレクション)の 指定で、詳しくは後日。

    cat コマンドを使うと、数行のテキスト・ファイルを作ることができる。

    % cat > file2 [←]
    GNU is Not Unix!
    Try Hurd.
    ^D
    % []
    
    終わりの印の^Dが来るまでキーボードから打ち込まれた文字を テキスト・ファイル file2 にコピーしている。

    本格的にテキスト・ファイルを作成するには、Emacs などの テキストエディタを使う。

    ◆ファイルのコピー

    指定したファイルの内容と全く同じ内容を持つファイルを作ること

    ファイルのコピーの目的

    ファイルをコピーするには cp (copy) コマンドを使う。

    % cp file1 file2 [←]
    
    この結果、ファイル file1 が ファイル file2にコピーされます。 コピー先のファイルfile2が存在しない時は新しくファイルfile2が作られます

    コピー先のファイルが既に存在していた場合、その内容は上書き(overwrite),うわがき)される。 (古い内容を消して新しい内容で埋める)。

    ◆ファイルを消す

    意義

    ファイルを消すには、rm (remove) コマンドを用いる。

    % rm file1 [←]
    
    このファイル file1 が削除される。

    rm コマンドで消してしまったファイルは、一般的には2度と戻らない。 消す前に、本当に不要かどうかを確認すること。

    ◆ファイルの名前を変更

    ファイル名を変更するには mv (move) コマンドを使う。

    % mv oldname newname [←]
    
    この結果、ファイルoldfileのファイル名をnewnameに変更される。

    ここで、newname のファイルが存在した場合、元の newname は消されてしまう。

    ◆ファイルの操作にともなうエラー

    No such file or directory
    そういう名前のファイルが見つからなかった。ファイル名が間違っていな いか確かめる。
    Permission denied
    ファイル名は合っていますが、アクセス権がない。 モードを ls -l で調べる。
    No space left on device
    ディスクに空領域がない。 まず、不要なファイルを消す。
    Disc quota exceeded
    ディスクに空領域があるが、 個人に割り当てられた領域を使い果たした。 まず、不要なファイルを消す。

    ■ファイルとディレクトリの木構造とパス名

    ■木構造

    木構造(tree structure)というのは、コンピュータ・サイエン ス(情報学類で学ぶ学問)でよく使われる用語。 を階層構造(hierarchical structure)ともいう。

    木構造の例を、大学の組織を使って説明する(図1)。

    木構造という名前は、本物の木が、一度枝分かれした後は決して交わらないこ とに似ていることによる。ある節から別の節までの道が2通り以上あるは、グ ラフ構造と呼ばれる。

    筑波大学、第一から第三学群、情報学類、主専攻の図

    図1 大学組織に見られる木構造

    図1では、筑波大学と書いてある所が木の根にあたる。根からは、何本かの学 群の枝が出ている。このように、コンピュータ・サイエンスでは、木の根を上 に書く習慣がある。第三学群の節には、情報学類、社会工学類などの子の節が ある。第三学群の親は、筑波大学である。

    筑波大学、第一から第三学群、情報学類の図

    図2 大学組織に見られる木構造(領域的な見方)

    A、B、2つの集合があると、一般には、次の4つに分割される。

    1. Aにしか含まれない部分
    2. AとBの両方に含まれる部分
    3. Bにしか含まれない部分
    4. AにもBにも含まれる部分
    領域(木構造)の場合、完全に含まれるか、無関係かのどちらかになる。

    集合の関係を説明した図。一般的な場合と領域の場合。

    図3 2つの集合の関係

    ◆字下げによる木の表現

    木構造を字下げで表すことがある。

    筑波大学

    ◆区切り文字入り表記

    「情報学類」という節を、次のように表記する。

    筑波大学第三学群情報学類

    コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。

    筑波大学.第三学群.情報学類

    筑波大学/第三学群/情報学類

    情報学類.第三学群.筑波大学

    区切り文字としては、「.」(点)、「/」(スラッシュ)、「\」(バック スラッシュ)、「¥」(円記号)などがよく使われる。単語を並べる時に、木 の根に近いほうから書く流儀と遠い方から書く流儀がある。

    ◆木の例

    コンピュータでは、次のような場所で木構造が使われている。

    コンピュータ以外では、次のような場所で木構造が使われている。

    ◆くわしくは

    総合科目「IT革命を解き明かす」/木構造(2005年11月7日) http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2005-11-07/

    ◆ディレクトリの木構造

    Unix(MacOSX, Linux含む)やMS Windows では、 ファイルの名前を、基本的には 木構造(tree structure,きこうぞう) という考え方で整理する。 木構造は、 階層構造(hieratical structure) とも呼ばれる。

    根が上にある本物の木

    図? 本物の木

    根が上にあるファイルUNIXの木

    図? ファイルとディレクトリの木

    ◆ルート・ディレクトリ(the root directory)

    本物の木に根にあたるディレクトリ。

    ルート・ディレクトリの名前は、/ (スラッシュ 1 文字)。

    ◆パス名

    Unix では、ファイルやディレクトリの名前を付ける時に、木構造で考えてそ のファイルやディレクトリにたどり着くための道順を使う。 このような名前をパス名(path name) という。 パス(path)とは「道」の意味。pass ではない。

    ルートディレクトリから出発する方法で表記するパス名を、 絶対パス名(absolute path name)

    絶対パス名は、ルートディレクトリを表す「/」の後に、 たどった枝の名前を並べ、間に区切りとして「/」をはさむ。

    例:/usr/bin/ls

    1. ルート・ディレクトリから出発する
    2. usr という枝に進む
    3. bin という枝に進む
    4. ls という枝に進む

    ◆カレントワーキングディレクトリ

    ルート・ディレクトリを起点にする方法(絶対パス名)だけでは、作業しにくい。 「現在作業中のディレクトリ」 「カレント・ワーキング・ディレクトリ(the current working directory)」 を起点として、ファイル名を扱う。

    カレント・ワーキング・ディレクトリを表示するには、pwd (print working directory) コマンドを使う。

    % pwd [←]
    /USA/California
    % []
    
    表示されている「/USA/California」が絶対パス名で表示されたカレント・ワー キング・ディレクトリの名前。

    カレント・ワーキング・ディレクトリを変更するにはcd(change change) コマ ンドを使う。

    % cd dirname [←]
    
    「ディレクトリdirnameにいく」とも言う。

    % pwd [←]
    /USA/California
    % cd /USA/Florida [←]
    % pwd [←]
    /USA/Florida
    % cd /USA/California/San-Francisco [←]
    % pwd [←]
    /USA/California/San-Francisco
    % []
    

    カレントワーキングディレクトリは、名前「.」で参照できる。

    lsコマンドは引数にディレクトリを指定すると、そのディレクトリの中にある ファイルの一覧を表示するが、引数を与えないと、「.」が与えられたものとし て働く。

    % ls [←]
    Los-Angeles  San-Francisco
    % pwd [←]
    /USA/California
    % ls /USA/California [←]
    Los-Angeles  San-Francisco
    % ls . [←]
    Los-Angeles  San-Francisco
    % []
    

    カレントワーキングディレクトリを起点としたパス名を 相対パス名(relative path name)という。 「/USA/California」の時、 「San-Francisco」は「/USA/California/San-Francisco」、 「San-Francisco/China-Town」は「/USA/California/San-Francisco/China-Town」の意味となります。

    ◆ディレクトリの親子関係

    ディレクトリの木構造の中で、
    親ディレクトリ(parent directory)
    あるディレクトリの ルート・ディレクトリからそのディレクトリへの道順で1つだけ 根に近いディレクトリ。 1個上のディレクトリともいう。 「..」で参照可能。
    子ディレクトリ(child directory), サブディレクトリ(subdirectory)
    あるディレクトリの、1つ根から遠いディレクトリ
    隣のディレクトリ、兄弟のディレクトリ
    共通の親ディレクトリを持つディレクトリ

    . で始る名前のファイルやディレクトリは、 普通 ls コマンドは、表示しない。 表示させるには、lsコマンドに-aオプションをつける。

    ◆ホーム・ディレクトリ(home directory)

    個人所有のファイルを保存する時に起点となるディレクトリ。

    cd コマンドに引数を与えないと、ホーム・ディレクトリにもどる。

    多くのシェル(csh,tcsh,bash,zsh) やEmacsなどでは、 ホームディレクトリを~で指定できる (指定できないプログラムもある。)

    は、ASCIIの形。 JIS では、となることがある。

    ■ディレクトリの操作

    作成、内容の表示、名前の変更、削除がある。

    ◆ディレクトリの作成

    mkdir (make directoryr)コマンドを使う。
    % mkdir dirname [←] [←]
    
    この結果、dirnameという名前のディレクトリが作らる。

    ◆ディレクトリの内容の表示

    ディレクトリに含まれるファイルの名前や子供のディレクトリの名前は、 ls コマンドで表示できる。
    % ls dirname [←]
    
    この結果、ディレクトリdirnameの中(下)にあるファイルと ディレクトリの名前が表示される。

    ◆ディレクトリ名の変更

    mvコマンドは、ディレクトリの名前を変更するために使える。

    % mkdir dir1 [←]
    % ls  [←]
    dir1
    % mv dir1 dir2 [←]
    % ls  [←]
    dir2
    % []
    

    ◆ディレクトリの削除

    ディレクトリを削除するには、 rmdir (remove directory))コマンドを使う。
    % rmdir dirname [←] [←]
    
    この結果、 ディレクトリdirnameが削除される。

    空でないディレクトリは、rmdir()コマンドでは 「Directory not empty,directorynotempty」 というエラー・メッセージが表示され削除できない。 この場合は、子供のディレクトリやファイル を削除してからもう一度削除する。

    ■ファイルとディレクトリの属性

    Unixのファイルとディレクトリは、内容(ビット列を保存する)の他に、 所有者、更新された日付などの 属性attributes ) を持つ。

    ls -l コマンドを実行するとカレントディレクトリのファイルや ディレクトリの属性が表示される。

    % ls -l [←]
    total 27224
    drwx------    9 yas  prof       306 Apr 27 20:12 Desktop
    drwx------   14 yas  prof       476 Apr 21 00:14 Documents
    drwx------   30 yas  prof      1020 Apr 25 15:30 Library
    -rw-------    1 yas  prof       146 Apr 11 15:21 dead.letter
    drwxr-xr-x   54 yas  prof      1836 Apr 13 13:36 public_html
    % []
    
    行単位に次のようなファイルやディレクトリの属性が表示さる。

    ◆所有者(owner)

    ファイルが誰の所有物かを示す。 コンピュータのなかでは人はユーザ名で表されるので、 所有者もユーザ名(上の例ではyas)で表される。

    ◆グループ名

    Unixでは複数のユーザが属する グループ(group)を設定できる。 ファイルは必ずどれか1つのグループに属する。

    ◆大きさ

    ファイルの大きさ(size)は、ファイルの内容をバイト数で数えた値(bit ではな く byte)。

    ◆時刻

    Unixのファイルには、次の3種類の時刻が記録されている
    最終アクセス時刻 (the last access time) ファイルの「内容」が最後にアクセス(読み込み)された時刻。 ls -lu で表示される。
    最終更新時刻 (the modification time)
    ファイルの「内容」が最後に変更(書き込み)された時刻。 ls -l で表示される「時刻」で、 単に「ファイルの時刻」といった場合にはこの時刻を意味する。
    最終変更時刻 (the status change time)
    ファイルの「属性」が最後に変更された時刻。 ls -lcで表示される「時刻」。
    他の時刻も属性の1つなので、「最終更新時刻」を変更すると、 「最終変更時刻」も変更した時刻も変わる。

    ◆モード(mode)

    ファイルの型とファイルへのアクセス(読み書き)の可否を決めるための属性

    ファイルの型

    モードの一番左1文字は、ファイルの型(type)を表わす。
    -
    ファイル
    d
    ディレクトリ

    許可されたアクセス方法

    モードからファイルの型を除いた部分はアクセスの可否を決めるための 情報。9文字ある。左から3文字の固まりが3組ある。

    各3文字はアクセス毎にその許可・拒否を表します。

    r	読込み可
    w	書込み可
    x	実行可(ディレクトリの場合は探索可)
    
    モードで該当する部分が「-」の場合は、その種類のアクセスが許可されてない ことを意味する。

    「読込み可」とは、その内容を参照できること意味する。たとえば、cp コマン ドでコピーできる。読出し可能なディレクトリなら、ls コマンドでそのディレ クトリ中のファイル名の一覧を表示できる。

    「書込み可」とは、その内容を変更することができることを意味する。たとえ ば、テキスト・ファイルなら、エディタで修正したものを書き込むことができ る。書込み可能なディレクトリなら、mv コマンドでそのディレクトリのなかに あるファイル名前を変更できる。

    「実行可」というのは、ファイルの内容がプログラムの場合は、 そのプログラムを実行することができる。

    ディレクトリに対する 「検索可」というのは、その下にあるファイルやディレクトリを たどっていけるという意味である。

    ディレクトリが「読込み可」でも、「検索可」でないと、 ディレクトリに「読込み可」のファイルがあっても、 ディレクトリに入ってファイルを読むことができない。 逆に、「検索可」でも、ディレクトリが「読込み可」でないと、 ディレクトリにあるファイル名やディレクトリ名を表示させることが できない。

    そのディレクトリにあるファイル名を知っていて、そのファイルが「読み込み 可」なら読むことができます。

    アクセスするユーザによって異なったアクセスの許可・拒否がしたいことがあ る。そのために、rwxの指定は、ファイルの所有者、ファイルの属すグループ、 それ以外の人用に3セット用意されている。

    例:モードが「rw-r--r--」のファイル

    まとめると、「誰でも読めるが所有者しか書けない」。

    ■マニュアルの読み方

    手引き2.2節。14ページ参照。
    % man man [←]
    % man ls [←]
    % man mkdir [←]
    % man -k keyword [←]
    

    ■ファイルとディレクトリの操作のまとめ

    ----------------------------------------------------------------------
    ls	f1 f2 f3	ファイルの名前の一覧の表示
    ls	dir		ディレクトリの内容の表示
    ls			カレント・ワーキング・ディレクトリの内容の表示
    ls -d	d1 d2 d3	ディレクトリの名前の一覧の表示
    ls -a	dir		ディレクトリの内容の表示(.で始まる名前も表示)
    ls -l	f1 f2 f3	ファイルの属性の表示
    pwd			カレント・ワーキング・ディレクトリの表示
    cd	dir		カレント・ワーキング・ディレクトリの変更
    cd			ホーム・ディレクトリへ移動
    cat	f1		ファイルの内容の表示
    cat	> f1		ファイルの作成
    cp	f1 f2		ファイルのコピー
    cp	f1 f2 f3 dir	ファイルを指定されたディレクトリへコピー
    cp	f1 f2 f3 .	ファイルをカレント・ワーキング・ディレクトリへコピー
    rm	f1 f2 f3	ファイルの削除
    mv	old new		ファイルの名前を変える
    mv	f1 f2 f3 dir	ファイルの名前を変える(dir以下への移動)
    mkdir	dir		ディレクトリの作成
    mkdir -p d1/d2/d3	ディレクトリの作成(親も自動的に作成)
    rmdir	dir		ディレクトリの削除(空のディレクトリの時)
    rm -r	dir		ディレクトリの削除(ディレクトリの内容も削除)
    ----------------------------------------------------------------------
    f1, f2, f3 はファイル名、dir, d1, d2, ... は、ディレクトリ名
    mode は、モードを表わす数字や記号。
    

    ■課題

    課題4 ディレクトリの木構造 締切りは、次の授業の時間とする。

    追加課題:

    (10) man コマンドで ls のマニュアルを読みなさい。そして、次の働きを行う
    オプションを探しなさい。
    
    「.」で始まるファイルを表示する。
    
    逆順に並べる(ソートする、sort)
    
    (ls -lと会わせて使う時に)ディレクトリの内容ではなく、普通のファイルと同
    じようにディレクトリそのものを対象とする。
    


    Last updated: 2006/05/22 19:36:42
    Yasushi Shinjo / <yas@is.tsukuba.ac.jp>