日本語・日本語文化学類2班,1996年10月07日

ファイルとディレクトリ

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります(1行で打つこと)。
http://www.hlla.is.tsukuba.ac.jp/~yas/classes/ipe/nitiniti2-enshu-1996/1996-09-30/ file-dir.html

あるいは、次のページから手繰っていくこともできます。 http://www.hlla.is.tsukuba.ac.jp/~yas/classes/ipe
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html
http://www.ipe.tsukuba.ac.jp/~yshinjo

■メモリ

計算機(コンピュータ)には、2種類の記憶するためのハードウェアが使われて います。

メモリ(memory)、あるいは、主記憶(main memory,primary storage)
CPUと同じく、半導体で作られていいます(IC)。電源を切ると、内容が 失われます。速度が速く、値段が高い。
2次記憶(secondary storage)
ハードディスク(アルミやガラスに磁性体を塗ったもの)、フロッピ・ディス ク(プラスチックに磁性体を塗ったもの)、磁気テープ(8mmビデオなど)、 CD-ROM などで作られていいます。電源を切っても、内容は保存されます。半 導体のメモリと比較して、速度が遅く、値段が安い。
メモリは、高速に計算を行ったり、データ処理の途中結果を保持するために使 われます。2次記憶は、データを保存するために使われます。

■ファイル -- データを保存する箱

計算機(コンピュータ)で ファイル (file)とは、情報を保存しておくためにソ フトウェア的に作られた箱のことです。計算機で扱える情報は、2進数で表現 されているのですが、それらを保存するために、様々な記憶媒体(ハードウェ ア)に保存されます。記憶媒体としては、ハードディスク、CD-ROM、光磁気ディ スクがあります。それらの記憶媒体は、日常的に扱う情報を保存するためには 大きすぎますし、扱い型がそれぞれのメディアごとに違っていては困ります。 このような問題を解決するための仕掛がファイルです。ファイルは、ソフトウェ アの働きで、大きな記憶媒体を扱いやすい大きさで、かつ、記憶媒体が変わっ ても同じように扱えるようにしたものです。

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

ファイルには、情報を保存する役割に加えてもう1つ大事な機能があります。 それは、情報に名前を付けることができるという機能です。この機能は、あた りまえすぎてすぐに有難みがわかないかもしれません。しかし、もし全ての自 分の情報をフロッピ・ディスク1枚1枚に入れてフロッピのラベルに書かれた 情報の名前を自分で読んで操作しなければならないことを想像すれば、情報の 名前を計算機が管理してくれる有難みを実感できるかと思います。

ファイルに名前を付ける働きを持っているソフトウェア的な仕掛けは、ディレ クトリ(directory)と呼ばれています。ディレクトリは、フォルダ(folder) と呼ばれることもあります。計算機の中では、ディレクトリは、ファイルの名 前を保存している特殊なファイルとして扱われています。

■ディレクトリの木

ディレクトリは、全体では 木構造(tree structure) になっています。階層化ディレクトリ(hierarchical directory)ということ もあります。

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

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

ファイルは、葉(leaf)になります。ディレクトリは、節(node)になります。特 殊な節として、根(root)があるます。これを、ルート・ディレクトリ(root directory)といいます。ルート・ディレクトリは、「/」で表します。

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

Sun (UNIX, 裏で動いているコンピュータ)で仕事をする時には、ユーザは、必 ずどこかのディレクトリに「居ます」。「居る」というのは、ディレクトリと 対応しているという意味です。ユーザが居るディレクトリを、カレント・ワー キング・ディレクトリ(current working directory)といいます。(正確に は、ユーザごとにカレント・ワーキング・ディレクトリがあるのではなく、実 行しているプログラムごとにあります。1人のユーザが同時に2つのパソコン から使っている時、それぞれ別のカレント・ワーキング・ディレクトリを持ち ます。)

■ホーム・ディレクトリ

ログイン(接続して、ユーザ名とパスワードを打つ)した時(コマンドモード に移った時)に、ユーザがいるディレクトリを、ホーム・ディレクトリ(home directory)といいます。下で説明する cd コマンドを、引数を付けないで実 行した時にも、ホーム・ディレクトリに移動します。

たとえば、新城のホーム・ディレクトリは、/home1/yshinjo/ です。 これは、次のような意味です。

■ファイルとディレクトリの木の探検

さっそく、ファイルとディレクトリの木の探検に出かけましょう。 それには、次の4つのコマンド(プログラム)を使います。
pwd -- print working directory
カレントワーキング・ディレクトリを表示する。
cd -- change directory
カレントワーキング・ディレクトリを移動させる。
ls -- list the contents of a directory
ディレクトリの内容を表示する。

■コマンド名、オプション、引数

コマンド・モードでは、次のようにして、コンピュータを操作をします。
----------------------------------------------------------------------
% コマンド名 オプション1 オプション2 ... 引数1 引数2 .. [←]
----------------------------------------------------------------------

コマンド名は、必須です。オプション(option)とは、コマンドの動きを少し変 えるためのものです。引数(ひきすう、argument,parameter)は、コマンドの 種類によっては、必ず必要とするものです。オプションと引数の区別は、必ず しも厳密ではなく、混同して使われることもあります。

たとえば、次の行は、「mnewsいう名前のコマンドを、オプションも引数も無 しで実行する」という意味です。

----------------------------------------------------------------------
% mnews  [←]
----------------------------------------------------------------------

たとえば、次のようになります。

----------------------------------------------------------------------
% pwd [←]
/home1/yshinjo/
% ls [←]
bin	mbox
% cd / [←]
% pwd [←]
/
% ls [←]
bin		home1		mnt		tftpboot	vmunix
boot		home2		net		tmp		
dev		kadb		pcfs		tmp_mnt
etc		lib		sbin		usr
export		lost+found	sys		var
% cd usr [←]
% pwd [←]
/usr
% ls [←]
5bin		demo		kvm		openware	test
5include	diag		lddrv		openwin		tmp
5lib		dict		lib		pub		ucb
ASCII-JTeX	etc		local		sccs		ucbinclude
TeX		export		local.tmp	share		ucblib
X11R5		games		lost+found	spool		xpg2bin
adm		hosts		man		src		xpg2include
bin		include		mdec		stand		xpg2lib
boot		jman		old		sys
% []
----------------------------------------------------------------------
  1. pwd
    カレント・ワーキング・ディレクトリの表示。
  2. ls
    カレント・ワーキング・ディレクトリ(現在はホーム・ディレクトリ)の内容の一覧を表示。
  3. cd /
    カレント・ワーキング・ディレクトリをルート(/)へ移動。
  4. pwd
    カレント・ワーキング・ディレクトリの表示。
  5. ls カレント・ワーキング・ディレクトリ(現在は/)の表示。
  6. cd usr カレント・ワーキング・ディレクトリをusr(/)へ移動。
  7. pwd
    カレント・ワーキング・ディレクトリの表示。
  8. ls カレント・ワーキング・ディレクトリ(現在は/usr)の表示。

★練習問題(1)

  1. 自分のホーム・ディレクトリを表示させなさい。
  2. 自分のホーム・ディレクトリの内容を表示させなさい。
  3. 次のディレクトリの内容を表示させなさい。

■親ディレクトリと子ディレクトリ、...

あるディレクトリの1つ上(1つ根に近い)ディレクトリを親ディレクトリ (parent directory)といいます。あるディレクトリに含まれているディレク トリを、そのディレクトリの子ディレクトリ(child directory)といいます。

親ディレクトリは、特殊な名前「..」がついています。また、カレン ト・ワーキング・ディレクトリも特殊な名前「.」で参照することが できます。

★練習問題(2)

■lessコマンド

less コマンドは、長いファイルをゆっくりと眺めるためのプロ グラムです。less では、長いファイルを1ページを表示するごとに、ユーザ からのスペース・キーの打込みを待ちます。less コマンドの使い方は、mnews の「ページャ・モード」とよく似ていてます。(歴史的には、less が先にあ り、mnews ページャ・モードが less コマンドに似せて作られました。)

less コマンドは、次のようにして使います。すなわち、less というコマンド 名に続いて、引数としてファイル名を与えます。

----------------------------------------------------------------------
% less ファイル名 [←]
----------------------------------------------------------------------
less コマンドでは、次のようなキーが使えます。
----------------------------------------------------------------------
キー		動き		|	キー		動き
----------------------------------------------------------------------
SPACE		1ページ進める	|	b		1ページ戻す
j		1行進める	|	k		1行戻す
q		終了する	|	h		ヘルプの表示
----------------------------------------------------------------------

★練習問題(3)

(3.1) /etc/hosts というファイルを、次の2つの方法で表示しなさい。

(3.2) /var/spool というディレクトリ、次の2つの方法で表示しなさい。 (3.3) less コマンドで、/var/spool/mail/ログイン名 と いうファイルの内容を調べなさい。そういう名前のファイルが無い時や、中味 がない時には、自分あてに電子メールを送って見て、mnewsで読む前に同じよ うに試してみなさい。

■「~(tilde)」の利用

「~」は、ユーザのホーム・ディレクトリを表すために使われます。 たとえば、「cd ~」で、ホーム・ディレクトリに移動できます。 また、「less ~/mbox」で、ホーム・ディレクトリにある mboxという名前のファイルを表示させることができます。

「~」には、他のユーザのホーム・ディレクトリを示す機能もあります。たと えば、次のように打つと、ユーザ名 yshinjo のホーム・ディレクトリの内容 を表示することができます。

----------------------------------------------------------------------
% ls ~yshinjo [←]
----------------------------------------------------------------------

なお、~は、画面、キーボード、プリンタで形が違う事があります。 とあったり、となっていたりします。Macintosh では、 1 の左の 「〜/`」のキーで打てます。「~」は、上段なので、シフ トを押しながら打ちます。

それから、Macintosh の telnet を使っていて、シフトを押さずに単に「〜/`」 を打つと、「」ではなく、ESC が入ることがあります。これは、ng (emacs) を使っていると、ESC をよく使うので、通信プログラム(telnet)がそ れを打ちやすくしているのです。

★練習問題(4)

  1. less コマンドでホーム・ディレクトリにあるmboxという名前のファイル の内容を画面に表示してみなさい。
  2. カレント・ワーキング・ディレクトリを / に打つし、ホーム・ディレク トリの内容を ls で表示しなさい。
  3. 自分のホーム・ディレクトリの内容を「~ログイン名」という形式を使っ て表示させなさい。
  4. 隣にすわっている人のログイン名を聞き、その人のホーム・ディレクト リの内容を表示しなさい。

■高度なlsの利用(ls -l, ls -a)

ls コマンドに -l(long) オプションを付けると、ファイルの種類(ディレクト リか普通のファイルか)、ファイルの所有者、ファイルの大きさやファイルが 最後に更新された日付を調べることができます。
----------------------------------------------------------------------
% ls [←]
bin	mbox
% ls -l [←]
total 5
drwxr-xr-x  2 yas           512 Oct  6 18:55 bin
-rw-------  1 yas          3380 Oct  6 20:07 mbox
% []
----------------------------------------------------------------------
ls コマンドは、普通、.から始まるファイル名を表示しません。しか し、-a (all) オプションを付けると、.から始まるファイル名も表示 します。
----------------------------------------------------------------------
% ls [←]
bin	mbox
% ls -a [←]
.	..	.cshrc	.login	.newsrc	bin	mbox
% []
----------------------------------------------------------------------
★練習問題(5)
  1. 自分のホーム・ディレクトリの内容を、「ls -l」で表示 しなさい。
  2. 自分のホーム・ディレクトリの内容を、「ls -a」で表示 しなさい。
  3. 自分のホーム・ディレクトリの内容を、「ls -la」で表 示しなさい。「ls -la」の代わりに「ls -l -a」 でもよい。
  4. less コマンドを使って、自分のホーム・ディレクトリにある次のファイ ルの内容を見てみなさい。

■ファイルのコピー

ファイルをコピーするには、cp (copy) コマンドを使います。 cp は、次の形式で使います
----------------------------------------------------------------------
% cp 古いファイルの名前 新しいファイルの名前 [←]
----------------------------------------------------------------------
これで、新しいファイルが作られ、古いファイルの内容が新しいファイルの内 容にコピーされます。注意することは、既に「新しいファイルの名前」があっ た時には、そのファイルが消されるということです。

★練習問題(6)

次のようにして、cp コマンドの動きを確かめなさい。

  1. カレント・ワーキング・ディレクトリをホーム・ディレクトリにする。
    % cd [←]
    % []
    
  2. ls -a [←] と打ち、.cshrc という名前の ファイルが存在すること、および、dot.cshrc という名前のファイル が「存在しない」ことを確認する。
    % ls -a [←]
    .	..	.cshrc	.login	.newsrc	bin	mbox
    % []
    
  3. cp コマンドを使って、.cshrc という名前のファ イルを、dot.cshrcという名前のファイルにコピーする。
    % cp .cshrc dot.cshrc [←]
    % [←]
    
  4. コピーしたあと、ls コマンドを使って、ファイルが作られたことを確認 する。
    % ls [←]
    bin		dot.cshrc	mbox
    % []
    
  5. ls -l コマンドを使って、.cshrc という名前のファイルと、 dot.cshrcという名前のファイルの大きさが同じことを確認しなさい。
    % ls -l dot.cshrc .cshrc [←]
    -rw-r--r--  1 yas          3380 Oct  6 20:11 .cshrc
    -rw-r--r--  1 yas          3380 Oct  6 22:38 dot.cshrc
    % []
    
こうして作った dot.cshrcという名前のファイルは、以下の練習問題 mv コマンドや rm コマンドの練習に使うとよい。

■ファイル名の変更

ファイルの名前を変更するには、mv (move) コマンドを使います。mv は、次 の形式で使います
----------------------------------------------------------------------
% mv 古いファイルの名前 新しいファイルの名前 [←]
----------------------------------------------------------------------
これで、「古いファイルの名前」いうファイルの名前が「新しいファイルの名 前」になります。ファイルの内容は、変りません。ファイルの名前だけが変り ます。注意することは、既に「新しいファイルの名前」があった時には、その ファイルが消されるということです。

★練習問題(7)

次のようにして、mv コマンドの動きを確認しなさい。

  1. cp コマンドを使って、なにかファイルを作る。
  2. ls コマンドを使って、ファイルが作られたことを確認する。
  3. less コマンドを使って、ファイルの内容を確認する。
  4. mv コマンドを使ってファイル名を変える。
  5. ls コマンドを使って、ファイル名が変ったことを確認する。
  6. less コマンドを使って、ファイルの内容が変っていない ことを確認する。

■ファイルの削除

ファイルを削除するには、rm (remove) コマンドを使います。 rm は、次の形式で使います

----------------------------------------------------------------------
% rm ファイル1 ファイル2 ファイル3 [←]
----------------------------------------------------------------------
これで、ファイル1,ファイル2,ファイル3が削除さ れます。

★練習問題(8)

次のようにして、rm コマンドの動きを確認しなさい。

  1. cp コマンドを使って、なにかファイルを作る。
  2. ls コマンドを使って、ファイルが作られたことを確認する。
  3. rm コマンドを使って、ファイルを削除する。
  4. ls コマンドを使って、ファイル名が変ったことを確認する。

■ディレクトリの作成と削除

自分でディレクトリを作ることもできます。それには、mkdir (make directory)コマンドを使います。 mkdir は、次の形式で使います
----------------------------------------------------------------------
% mkdir ディレクトリ名 [←]
----------------------------------------------------------------------
これで、ディレクトリが作成されます。

ディレクトリを削除するには、rmdir コマンドを使います。rmdir は、次の形 式で使います

----------------------------------------------------------------------
% rmdir ディレクトリ名 [←]
----------------------------------------------------------------------
これで、ディレクトリが削除されます。ただし、ディレクトリの中が空の時に しかディレクトリを削除することができません。本当にそのディレクトリを削 除したい時には、まず、中のファイルを rm で削除するか、mv コマンドで他 のディレクトリに移します。

★練習問題(9)

次のようにして、mkdir コマンドとrmdir コマン ドの動きを確認しなさい。

  1. カレント・ワーキング・ディレクトリをホーム・ディレクトリにする。
    % cd [←]
    % pwd [←]
    /home1/yshinjo/
    % []
    
  2. ls コマンドを使って、dir1という名前のファイルやディレクトリが「存 在しない」ことを確認する。
    % ls [←]
    mbox
    % []
    
  3. mkdir コマンドを利用して、ホーム・ディレクトリの下に ディレクトリを作成する。
    % mkdir dir1 [←]
    % []
    
  4. ls コマンドを使って、作成されたディレクトリが存在することを確認す る。
    % ls [←]
    dir1	mbox
    % ls -l [←]
    total 5
    drwxr-xr-x  2 yas           512 Oct  6 23:25 dir1
    -rw-------  1 yas          3380 Oct  6 20:07 mbox
    % []
    
  5. cd コマンドを使って、カレント・ワーキング・ディレクトリを作成した ディレクトリに移し、pwd コマンドでカレント・ワーキング・ディレクトリが 移っていことを確認する。
    % cd dir1 [←]
    % pwd [←]
    /home1/yshinjo/dir1
    % []
    
  6. cd コマンドを使って、カレント・ワーキング・ディレクトリをホーム・ ディレクトリに移す。
    % cd .. [←]
    % pwd [←]
    /home1/yshinjo
    % ls [←]
    dir1	mbox
    % []
    
  7. 作成したディレクトリを、rmdir コマンドで削除する。
    % rmdir dir1 [←]
    % ls [←]
    mbox
    % []
    

■ファイル名の検索

ls コマンドを活用すると、簡単なファイル名の検索をすることができます。 次の例は、ディレクトリ /usr/bin の下にある a から始まるファイル名を 検索して表示させています。
----------------------------------------------------------------------
% cd /usr/bin [←]
% ls a* [←]
acctcom		adjacentscreens	align_equals	as		atq
adb		adv		ar		at		atrm
addbib		aedplot		arch		atoplot		awk
% []
----------------------------------------------------------------------
このように、「*」は、任意の文字と対応します。「*」は、いろいろ所に使う ことができます。
a*
aから始まるファイル名
abc*
abcから始まるファイル名
*a
aで終わるファイル名
*a*
aを含むファイル名
*a*a*
aを2文字含むファイル名
*a*a*a*
aを3文字含むファイル名
a*b
aで始まりbで終わるファイル名

* と似た ものに、? があります。? は、任意の1文 字と対応します。また、[a-c]のように打つ方法もあります。これは、 a,b,c のいずれかに対応します。[a-z]と打つと、アルファベットの 小文字、[A-Z]では、アルファベットの大文字、[0-9]では、 数字に対応します。

*, ?, [...]によるファイル名の検索機能は、普通、 コマンドといっしょに使われます。しかし、他のコマンドでも、同じような機 能が働いています。たとえば、lsコマンドの代わりに、echo コマンドを使う こともできます。echo コマンドは、引数をそのまま画面に表示するコマンド です。

----------------------------------------------------------------------
% echo hello [←]
hello
% []
----------------------------------------------------------------------
echo と *, ?, [...]を組み合わせることができま す。
----------------------------------------------------------------------
% cd /usr/bin [←]
% echo a*b [←]
adb addbib
% []
----------------------------------------------------------------------

★練習問題(10) ディレクトリ /usr/bin/ には、いろいろな名前のプログラム(コマンド) が、ファイルとして保存されている。ここにある、次のような名前のプログラ ムを検索してみなさい。