共通科目情報処理(実習)、国際総合学類対象、1997年01月10日 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/kokusai2-enshu-1996/1997-01-10
/file-dir.html
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html
http://www.ipe.tsukuba.ac.jp/~yshinjo
http://www.ipe.tsukuba.ac.jp
1996年1月8日の講義 でも話たように、ファイルは、コンピュータでデータを保存するための基本的 な仕組みです。ファイルには、次の2つの重要な側面があります。
ディレクトリの中にディレクトリ名を登録することができるので、全体ではディ
レクトリは、全体では
木構造(tree structure)
になっています。階層化ディレクトリ(hierarchical directory)ということ
もあります。
図1-1 ファイルとディレクトリの木/
」で表します。
たとえば、新城のホーム・ディレクトリは、/home1/yshinjo/
です。
これは、次のような意味です。
/
)から出発する。
home1
という名前の節に進む。
yshinjo
という名前の節に進む。
自分のホーム・ディレクトリは、~/
または、~
(画面では、
〜
(tilde) または  ̄
と表示される)で表わされます。
このページでは、ファイルとディレクトリの木の探検に出かけましょう。
それには、ls
コマンド(プログラム)を使います。
その前に、簡単に「コマンド・モード」の使い方を復習します。
詳しくは、次のページにあります。
コマンド・モードでは、次のようにして、コンピュータを操作をします。
---------------------------------------------------------------------- % コマンド名 オプション1 オプション2 ... 引数1 引数2 .. ----------------------------------------------------------------------
コマンド名は、必須です。オプション(option)とは、コマンドの動きを少し変 えるためのものです。引数(ひきすう、argument,parameter)は、コマンドの 種類によっては、必ず必要とするものです。オプションと引数の区別は、必ず しも厳密ではなく、混同して使われることもあります。
たとえば、次の行は、「mnews
いう名前のコマンドを、オプショ
ンも引数も無しで実行する」という意味です。
次の行は、「---------------------------------------------------------------------- % mnews ----------------------------------------------------------------------
mnews
いう名前のコマンドを、オプション
-n MAIL
で実行する」という意味です。この結果、mnews を実行
して MAIL
を i で選んだ画面になます。
次の行は、「---------------------------------------------------------------------- % mnews -n MAIL ----------------------------------------------------------------------
ls
いう名前のコマンドを、引数/
で
実行する」という意味です。
---------------------------------------------------------------------- % ls / ----------------------------------------------------------------------
各自で、次のようなことをやってみましょう。
次のように打つと、ルート・ディレクトリの内容が表示されます。
---------------------------------------------------------------------- % ls / bin cdrom home1 home6 lost+found tmp_mnt boot core home10 home7 mnt usr ccecs dev home2 home8 pcfs var ccecs1 etc home3 home9 sbin vmunix ccecs2 export home4 kadb sys vmunix.old ccecs3 home home5 lib tmp % ----------------------------------------------------------------------
ls
コマンドには、-l
(long)というオプションが
あります。次のように打つと、ルート・ディレクトリの内容が表示されますが、
-l
を付けた効果で長く表示されます。
一番左端の文字で、ファイルの種類がわかります。---------------------------------------------------------------------- % ls -l / total 5029 lrwxrwxrwx 1 root 7 Mar 18 1993 bin -> usr/bin -r--r--r-- 1 root 103512 Mar 18 1993 boot lrwxrwxrwx 1 root 7 Mar 24 1993 ccecs -> /ccecs1 drwxr-xr-x 19 root 1024 May 5 1996 ccecs1 drwxr-xr-x 8 root 512 May 5 1996 ccecs2 <中略> drwxr-xr-x 35 root 1024 Jul 25 1994 usr drwxr-xr-x 12 root 512 Mar 22 1993 var -rwxr-xr-x 1 root 2204271 Feb 5 1995 vmunix -rwxr-xr-x 1 root 2204161 Apr 1 1993 vmunix.old % ----------------------------------------------------------------------
-
d
l
次の9文字は、ファイルの属性の1つで、ファイルの許可された操作を表わし
ています。rwxrwxrwx
の9文字は、次の順番に左から3文字ず
つ区切って読みます。
rwx
は、それぞれ次のような意味です。
r
w
x
x
rwx
が来るべき所に、-
が来ている時には、
その操作が許可されていないことを意味します。
第2カラムの数字は、リンク数と呼ばれていて、ファイル名の数を表わしています。 普通は気にしなくてもかまいません。
第3カラムの文字は、ファイルの所有者のログイン名です。ログイン名とは、
ログインの時に login:
に対して打ち込む文字列です。
YMM_Computer(root) は、システム管理者のログイン名です。
第4カラムの文字は、ファイルの大きさ(バイト数)です。
第5カラム〜第7カラムは、ファイルが最後に更新された時刻(日付)を表わ しています。
第8カラムは、ファイル名です。
ホーム・ディレクトリの内容を表示させましょう。
---------------------------------------------------------------------- % ls ~/ mbox mbox~ % ----------------------------------------------------------------------
mbox
は、
個人用のメー
ルボックスです。この中に受け取って取り込んだメールが保存されています。
mbox~
は、前回メールを操作した時(新着メールの取り込むなど)の
メール・ボックスです。こういうファイルを、バックアップ(backup)といい
ます。バックアップは、本物が壊れた時に代り使います。1つ前のバックアッ
プがあると、メールを操作する時に間違った場合に元にもどれるので安心です。
ls -l
でホーム・ディレクトリの内容を表示させてみましょう。
---------------------------------------------------------------------- % ls -l ~/ total 2 -rw------- 1 ta08 609 Jan 9 21:07 mbox -rw------- 1 ta08 304 Jan 9 21:07 mbox~ % ----------------------------------------------------------------------
ls
コマンドでは、引数としてディレクトリの名前ではなく
ファイルの名前を与えることもできます。その時は、ディレクトリの内容では
なく、ファイルの名前が表示されます。
---------------------------------------------------------------------- % ls -l ~/mbox -rw------- 1 ta08 609 Jan 9 21:07 /home1/ta08/mbox % ----------------------------------------------------------------------
ls
コマンドには、引数として、ファイル名をいくつも与えるこ
とができます。この機能は、いくつかのファイルを比較する時に便利です。
---------------------------------------------------------------------- % ls -l ~/mbox /var/spool/mail/ta08 -rw------- 1 ta08 609 Jan 9 21:07 /home1/ta08/mbox -rw------- 1 ta08 0 Jan 9 21:07 /var/spool/mail/ta08 % ----------------------------------------------------------------------
ls
コマンドには、引数として、ディレクトリ名をいくつも与え
ることもできます。
less
コマンドは、長いファイルをゆっくりと眺めるためのプロ
グラムです。less では、長いファイルを1ページを表示するごとに、ユーザ
からのスペース・キーの打込みを待ちます。less コマンドの使い方は、mnews
の「ページャ・モード」とよく似ていてます。(歴史的には、less が先にあ
り、mnews ページャ・モードが less コマンドに似せて作られました。)
less コマンドは、次のようにして使います。すなわち、less というコマンド 名に続いて、引数としてファイル名を与えます。
less コマンドでは、次のようなキーが使えます。---------------------------------------------------------------------- % less ファイル名 ----------------------------------------------------------------------
---------------------------------------------------------------------- キー 動き | キー 動き ---------------------------------------------------------------------- SPACE 1ページ進める | b 1ページ戻す j 1行進める | k 1行戻す q 終了する | h ヘルプの表示 ----------------------------------------------------------------------
次のファイルを less
コマンドで表示してみなさい。
/etc/hosts
---------------------------------------------------------------------- % less /etc/hosts ----------------------------------------------------------------------
~/mbox
less /var/spool/mail/自分のログイン名
「~
」は、ユーザのホーム・ディレクトリを表すために使われます。
たとえば、「~/
」、または、単に「~
」で、「自分」のホー
ム・ディレクトリを表わします。「less ~/mbox
」で、ホーム・
ディレクトリにあるmbox
という名前のファイルを表示させることがで
きます。
「~
」には、他のユーザのホーム・ディレクトリを示す機能もありま
す。たとえば、次のように打つと、ユーザ名yshinjo
のホーム・
ディレクトリの内容を表示することができます。
---------------------------------------------------------------------- % ls ~yshinjo ----------------------------------------------------------------------
注意すべきことは、「~/mbox
」と「~mbox
」(/
なし)
の意味が違うということです。前者は、「自分のホーム・ディレクトリの下に
あるmbox
」という意味です。後者は、「mbox
という名
前のログイン名を持つ人のホーム・ディレクトリ」です。
なお、~は、画面、キーボード、プリンタで形が違う事があります。 〜とあったり、 ̄となっていたりします。Macintosh では、 1 の左の 「〜/`」のキーで打てます。「~」は、上段なので、シフ トを押しながら打ちます。
それから、Macintosh の telnet を使っていて、シフトを押さずに単に「〜/`」 を打つと、「`」ではなく、ESC が入ることがあります。これは、ng (emacs) を使っていると、ESC をよく使うので、通信プログラム(telnet)がそ れを打ちやすくしているのです。
ls コマンドは、普通、---------------------------------------------------------------------- % ls ~/ mbox mbox~ % ls -l ~/ total 2 -rw------- 1 ta08 609 Jan 9 21:07 mbox -rw------- 1 ta08 304 Jan 9 21:07 mbox~ % ----------------------------------------------------------------------
.
から始まるファイル名を表示しません。しか
し、-a (all) オプションを付けると、.
から始まるファイル名も表示
します。
---------------------------------------------------------------------- % ls ~/ mbox mbox~ % ls -a ~/ . .exrc .less .mailrc .ng-vt100 .. .history .login .newsrc mbox .cshrc .hushlogin .logout .newsrc~ mbox~ % ----------------------------------------------------------------------
ls -l
」で表示
しなさい。
ls -a
」で表示
しなさい。
ls -la
」で表
示しなさい。「ls -la
」の代わりに「ls -l -a
」
でもよい。
これで、新しいファイルが作られ、古いファイルの内容が新しいファイルの内 容にコピーされます。注意することは、既に「新しいファイルの名前」があっ た時には、そのファイルが消されるということです。---------------------------------------------------------------------- % cp 古いファイルの名前 新しいファイルの名前 ----------------------------------------------------------------------
次のようにして、cp コマンドの動きを確かめなさい。
ls -a ~
と打ち、.cshrc
という名前
のファイルが存在すること、および、dot.cshrc
という名前のファイ
ルが「存在しない」ことを確認する。
---------------------------------------------------------------------- % ls -a ~/ . .exrc .less .mailrc .ng-vt100 .. .history .login .newsrc mbox .cshrc .hushlogin .logout .newsrc~ mbox~ % ----------------------------------------------------------------------
cp
コマンドを使って、~/.cshrc
という名前のファ
イルを、~/dot.cshrc
という名前のファイルにコピーする。
---------------------------------------------------------------------- % cp ~/.cshrc ~/dot.cshrc % ----------------------------------------------------------------------
---------------------------------------------------------------------- % ls -a ~/ . .exrc .less .mailrc .ng-vt100 mbox~ .. .history .login .newsrc dot.cshrc .cshrc .hushlogin .logout .newsrc~ mbox % ----------------------------------------------------------------------
~/.cshrc
という名前のファイルと、
~/dot.cshrc
という名前のファイルの大きさが同じことを確認しなさい。
---------------------------------------------------------------------- % ls -l ~/.cshrc ~/dot.cshrc -rw-r--r-- 1 ta08 119 Dec 3 09:18 /home1/ta08/.cshrc -rw-r--r-- 1 ta08 119 Jan 9 23:00 /home1/ta08/dot.cshrc % ----------------------------------------------------------------------
~/.cshrc
という名前のファイルと、
~/dot.cshrc
という名前のファイルの内容が同じことを確認しなさい。
---------------------------------------------------------------------- % less ~/.cshrc <内容が表示される> % less ~/dot.cshrc <内容が表示される> % ----------------------------------------------------------------------
~/dot.cshrc
という名前のファイルは、以下の練習問
題mv
コマンドや rm
コマンドの練習に使うとよ
い。
これで、「古いファイルの名前」いうファイルの名前が「新しいファイルの名 前」になります。ファイルの内容は、変りません。ファイルの名前だけが変り ます。注意することは、既に「新しいファイルの名前」があった時には、その ファイルが消されるということです。---------------------------------------------------------------------- % mv 古いファイルの名前 新しいファイルの名前 ----------------------------------------------------------------------
次のようにして、mv
コマンドの動きを確認しなさい。
cp
コマンドを使って、なにかファイルを作る。
ls
コマンドを使って、ファイルが作られたことを確認する。
less
コマンドを使って、ファイルの内容を確認する。
mv
コマンドを使ってファイル名を変える。
ls
コマンドを使って、ファイル名が変ったことを確認する。
less
コマンドを使って、ファイルの内容が変っていない
ことを確認する。
ファイルを削除するには、rm (remove) コマンドを使います。 rm は、次の形式で使います
これで、---------------------------------------------------------------------- % rm ファイル1 ファイル2 ファイル3 ----------------------------------------------------------------------
ファイル1
,ファイル2
,ファイル3
が削除さ
れます。
次のようにして、rm
コマンドの動きを確認しなさい。
cp
コマンドを使って、なにかファイルを作る。
ls
コマンドを使って、ファイルが作られたことを確認する。
rm
コマンドを使って、ファイルを削除する。
ls
コマンドを使って、ファイル名が削除されたことを確
認する。
これで、ディレクトリが作成されます。---------------------------------------------------------------------- % mkdir ディレクトリ名 ----------------------------------------------------------------------
ディレクトリを削除するには、rmdir コマンドを使います。rmdir は、次の形 式で使います
これで、ディレクトリが削除されます。ただし、ディレクトリの中が空の時に しかディレクトリを削除することができません。本当にそのディレクトリを削 除したい時には、まず、中のファイルを rm で削除するか、mv コマンドで他 のディレクトリに移します。---------------------------------------------------------------------- % rmdir ディレクトリ名 ----------------------------------------------------------------------
次のようにして、mkdir
コマンドとrmdir
コマン
ドの動きを確認しなさい。
~/
に
dir1
という名前のファイルやディレクトリが「存在しない」ことを確
認する。
---------------------------------------------------------------------- % ls ~/ mbox mbox~ % ----------------------------------------------------------------------
dir1
という名前のディレクトリを作成する。
---------------------------------------------------------------------- % mkdir ~/dir1 % ----------------------------------------------------------------------
---------------------------------------------------------------------- % ls ~/ dir1 mbox mbox~ % ----------------------------------------------------------------------
---------------------------------------------------------------------- % ls -l ~/ total 3 drwxr-xr-x 2 ta08 512 Jan 9 23:10 dir1 -rw------- 1 ta08 609 Jan 9 21:07 mbox -rw------- 1 ta08 304 Jan 9 21:07 mbox~ % ----------------------------------------------------------------------
---------------------------------------------------------------------- % ls ~/dir1 % ----------------------------------------------------------------------
---------------------------------------------------------------------- % rmdir ~/dir1 % ----------------------------------------------------------------------
---------------------------------------------------------------------- % ls ~/ dir1 mbox mbox~ % ----------------------------------------------------------------------
このように、「*」は、任意の文字と対応します。「*」は、いろいろ所に使う ことができます。---------------------------------------------------------------------- % ls /usr/bin/a* /usr/bin/acctcom /usr/bin/align_equals /usr/bin/atoplot /usr/bin/adb /usr/bin/ar /usr/bin/atq /usr/bin/addbib /usr/bin/arch /usr/bin/atrm /usr/bin/adjacentscreens /usr/bin/as /usr/bin/awk /usr/bin/aedplot /usr/bin/at % ----------------------------------------------------------------------
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 と---------------------------------------------------------------------- % echo hello hello % ----------------------------------------------------------------------
*
, ?
, [...]
を組み合わせることができま
す。
---------------------------------------------------------------------- % ls /usr/bin/a*b /usr/bin/adb /usr/bin/addbib % echo /usr/bin/a*b /usr/bin/adb /usr/bin/addbib % ls -l /usr/bin/a*b lrwxrwxrwx 1 root 14 Mar 18 1993 /usr/bin/adb -> ../kvm/adb/adb -rwxr-xr-x 1 root 16384 Jul 24 1992 /usr/bin/addbib % echo -l /usr/bin/a*b -l /usr/bin/adb /usr/bin/addbib % ----------------------------------------------------------------------
l
から始まるもの
m
で終わるもの
q
を含むもの
rm
から始まるもの
dir
を含むもの
a
から始まり、2文字の
cp 古 新
less ファイル名
ls ディレクトリ名
ls ファイル名
ls -l ディレクトリ名
ls -a ディレクトリ名
.
」ら始まる名前も含めてファイル名の一覧を表示する。
mkdir ディレクトリ名
mv 古 新
rm ファイル名
rmdir ディレクトリ名