情報処理第 4 回「ファイルシステム」 mkdir, cd, rmdir, chmod, ls -l 2000 年 5 月 10 日

目次

1 本日の目標 1 2 ディレクトリ 1 3 木構造 2 4 相対パスと絶対パス 3 5 ディレクトリの消去 3 6 特別なディレクトリの表し方 3 7 ファイルのモード 4 8 ファイルの実行権 5 9 レポート問題 7 10 気になる本 7

1 本日の目標

• ディレクトリの概念になれる。

• ディレクトリの掘り方，移動の仕方を覚える．

• ファイルのモードについて知る．

2 ディレクトリ

ディレクトリとはファイルを入れておくフォルダーのようなものです．ファイルと同様に個々のディレクトリには名前が付きます．例えば tex, document という名前の２つのディレクトリを作成するには

     mkdir tex
     mkdir document

とします. mkdir は make directory の意味で，ディレクトリを作成するコマンドです．うまく作成できたかどうか確かめてみるには ls コマンドを用います. ls コマンドはファイルだけでなくディレクトリも表示します．

     ls

表示されたファイルの一覧に tex と document が確認できます．この場合，ファイルとディレクトリの区別は，なされません． UNIX では，ディレクトリとファイルは同じものとして扱うので，既に存在するファイル名と同じ名前のディレクトリを作ることは出来ません．同様に，既に存在するディレクトリと同じ名前のファイルを作ることも出来ません．ファイルとディレクトリの区別をつけて表示したいときは， ls -F とオプション F を付けて打ちます．このオプションを付けると，ディレクトリには，名前の最後に / （スラッシュ）がつきます．

     ls -F

ディレクトリの中には，ファイルをいくつか入れることができます．先週作成したであろう (?) ファイル renshu1.tex を今作ったディレクトリ tex の中に移動してみましょう．次のコマンドを打って下さい．

     mv renshu1.tex tex

これで， renshu1.tex というファイルがディレクトリ tex の中に移動しました． ls コマンドで確認してみてください. renshu1.tex がホームディレクトリ (ログインして最初にいる場所) に存在しないはずです. renshu1.tex というファイルは，ディレクトリ tex の中に入ってしまったので，ただ ls と打っただけでは表示されなくなります．

ディレクトリの中身を確認するには，

ls ディレクトリ名

と ls に続いて，ディレクトリの名前を打ちます．（ls とディレクトリ名の間には，スペースが入ります．）

逆にディレクトリの中のファイルを移動するには次のようにします. tex の中のファイル renshu1.tex を document の中に移動してみます．

     mv tex/renshu1.tex document

このように，ディレクトリの中にあるファイルは，ディレクトリの名前の後ろに/ （スラッシュ）を書き，その後ろにファイルの名前を書くことによって表します．

一般に mv コマンドは，

mv ファイル名又はディレクトリ名ファイル名又はディレクトリ名

という使い方をします．１番目と２番目両方の引数がファイル名のときはファイル名が変更されます．

２番目の引数（コマンドの後に書く文字列）が既に作られているディレクトリの名前のときは，そのディレクトリの中に１番目の引数のファイル又はディレクトリを移動するという操作を行います．もっと詳しい説明は， man コマンド（man は manual の略）を使って調べて下さい．

問題１ディレクトリ document の中にディレクトリ document-1 を作成せよ．

問題２ディレクトリの中にあるファイルをディレクトリの外に出すにはどうしたらよいか．

ファイルシステムの木構造について説明します.

3 木構造

実は，今現在私達が見ているファイル（Mail や renshu1.tex）もディレクトリの中にあるのです．個人のアカウント毎にディレクトリが作成されていて，ログインするとそのディレクトリの中に入ることになるわけです．この個人のディレクトリをホームディレクトリ（home directory）と呼びます．ホームディレクトリは，また更に大きなディレクトリの中に入っています．一番大きな（上の）ディレクトリはルートディレクトリと呼ばれ， / （スラッシュ）で表されます．現在いるディレクトリの名前は， pwd (present working directory) というコマンドで調べられます．

     pwd

と打ってください. ホームディレクトリは，アカウント毎に割り当てられていますから，各自違った表示になっている筈です．私の場合は

/homer/se/tea/osaka

よってこのときファイル名は

/homer/se/tea/osaka/Mail

と表されます. このような表示をフルパス名 (full path name) と呼びます. 実際は ls でみるとわかるように, Mail のみで表示されています. これはカレントディレクトリといい仕組みで, /homer/se/tea/osaka を隠して暗黙に付け加えられているわけです.

現在いるディレクトリを変更するには, cd というコマンドを用います．例えば最初に作った document というディレクトリの中に移動してみましょう．

     cd document

で移動出来ます． cd は change directory の略です．ちゃんと移動できたかどうかは， pwd で確かめられます．先程調べた自分のホームディレクトリの最後に /document が加わっているはずです．また， ls コマンドは，現在自分がいるディレクトリの中のファイルを表示しますから，ここで ls と打ってもホームディレクトリにある Mail は見ることができません．

     ls document1

ひとつ上のディレクトリは .. （ピリオド２つ）で表します．ホームディレクトリにある tex のディレクトリに移動するには，

     cd ../tex

と打ちます．ホームディレクトリへの移動は，単に cd と打つだけでも移動できます．

4 相対パスと絶対パス

先程から親ディレクトリは ../ （ピリオド２つ．最後のスラッシュは無くても良い）と表してきましたが，この場合，現在いるディレクトリが異なれば，当然，親ディレクトリも異なります．（同じこともあります．）これに対して， pwd コマンドで表示されるディレクトリの名前は，ルートディレクトリから書かれています．ファイル名やディレクトリ名は，現在いるディレクトリから，相対的な位置で表す方法と，ルートディレクトリからの位置で表す方法と２通りあります．前者を相対パス，後者を絶対パスといいます．ファイルを扱うのにはどちらを使用してもかまいません．

現在いるディレクトリのことをカレントディレクトリと呼び， ./ （ピリオド１つ）で表します．これを使うと，ディレクトリの中のファイルやディレクトリを現在のディレクトリに移動することが出来ます．セクション 2 の問題２を考えてみます．今，ディレクトリ document には， renshu1.tex というファイルとサブディレクトリ document-1 があります．

     ls -F document

この中のファイル renshu1.tex を現在のディレクトリ ./ に移動するのですから，

     mv document/renshu1.tex .

とすればよいことになります．

5 ディレクトリの消去

いらなくなったディレクトリは， rmdir で消去できます．（remove directory の略）ただし，ディレクトリの中にファイルやサブディレクトリがある場合には，消去はできません．ディレクトリのファイルを rm コマンドで消去してから， rmdir を行って下さい．（ファイルやサブディレクトリを含むディレクトリを一度に消去する方法もあります．この方法については自習して下さい．）

6 特別なディレクトリの表し方

特別なディレクトリの表し方として，次の２つについて学びました．

. （ピリオド 1 つ）現在いるディレクトリ .. （ピリオド 2 つ）１つ上のディレクトリ

同様に， home directory については，次のような表し方があります． ~ （チルダ ~）

     ~(login directory 名) （チルダ + login directory 名）

前者は，自分がログインしたディレクトリを表します．後者は，他人の（自分も含めて） home directory を表します．例えば，アカウント rp001111 の人の home directory は， rp001111 ですから，そのディレクトリに移動するには，

     cd ~rp001111

とします. RAIBOW の設定では，他人のディレクトリに入ることができるようになっています．

問題ホームディレクトリの所有者が設定を変えることにより，他人がディレクトリに入れないようにすることができます．どのように設定を変えればよいでしょうか？

7 ファイルのモード

UNIX では，共同で文書やプログラムを作成することを考えて，普通に作成したファイルは，他のユーザ（利用者）も読むことが出来るようになっています．一方，例えば Mail ディレクトリのように，プライベートな文書も扱います．このようなファイルや，マシンの管理上秘密にしておく必要のあるファイルは，他のユーザに読めないようにしておく必要があります．

今まで作成してきたファイルが，他人に読めるようになっているかチェックしてみましょう．ホームディレクトリに戻り， l オプションを付けて， ls を実行してみて下さい．

     ls -l

例えば次のように表示されるはずです．

     drwx------   3 rp001111 mail         1024 Apr 16 14:32 Mail
     drwxrwxrwx   2 rp001111 student      1024 Apr 16 14:34 Wnn6
     -rw-r--r--   1 rp001111 student       229 Apr 21 13:35 renshu1.aux
     -rw-r--r--   1 rp001111 student       201 Apr 21 13:07 renshu1.doc
     -rw-r--r--   1 rp001111 student       876 Apr 21 13:35 renshu1.dvi
     -rw-r--r--   1 rp001111 student       984 Apr 21 13:35 renshu1.log
     -rw-r--r--   1 rp001111 student       201 Apr 14 13:11 renshu1.tex

ファイルの読み書きが出来るか否かは，ファイルのモードによって決まります．ファイルのモードは，１列目の

     -rw-r--r--

の１０文字により表示されます．この文字列からファイルのモードを知るには，まず，次のように１文字，３文字，３文字，３文字と区切ります．

         user(owner)  group     others
     -       rw-       r--       r--

最初の１文字は，そのファイルの種類を表します．一般のファイルは， - （ハイフン）で表されます．ディレクトリの場合は， d で表されます．（その他の場合は，レポート問題です．）自分 (user) が読み書き出来るか，グループの人 (group) が読み書き出来るか，他のユーザ (others) が読み書き出来るか，を表します．（理工学部の学生は， student という同じグループに属しています．グループに関する詳しいことは，自習して下さい．）そのファイルを読める（read 権がある）場合は r，書ける（write 権がある）場合は w，と表示されます． r の表示される位置と w の表示される位置は，決まっていて，それぞれ３文字に区切った１文字目と２文字目になります．

例えば，一般のファイルで，自分は書き込みのみ出来て，同じグループの人は，読むことだけが出来，他のユーザは，読むことも書くことも出来ないファイルのモードは，

     --w-r-----     (-|-w-|r--|---)

となります．

このファイルモードは変更することも出来ます。ファイルモードの変更は， chmod (change mode) で行います． RAINBOW の設定では， public_html ディレクトリが他人に読めるようになっているので，同じグループの人 (g)roup にも他のユーザ (o)thers にも読めない (-r) ようにするには

     chmod go-r public_html

とします． public_html ディレクトリはホームページを作成する場合に用いるディレクトリです.(簡単なホームページの作り方は時間がありましたら後日説明します)

renshu1.tex のファイルを自分 (u)ser が読めないように変更してみましょう．

     chmod u-r renshu1.tex

読めないファイルを読もうとするとどうなるか，実験してみましょう．

     cat renshu1.tex

自分のファイルが読めないというのも困りますから，もとに戻します．自分 (u)ser に読み込みを許可する (+r) ということで，

     chmod u+r renshu1.tex

同様に， renshu1.tex のファイルを書き込み禁止 (-w) にするには，

     chmod u-w renshu1.tex

とします．こうすると，誤って，ファイルに上書きしてしまうことを防ぐことが出来ます．

8 ファイルの実行権

ファイルモードの３文字目は，実行権 e(x)cute を表します．実行出来るファイルには， x の文字が表示されます．例えば， /usr/local/bin というディレクトリにある mule というファイルは実行可能なファイルで，

     /usr/local/bin/mule

と打つと mule が起動します．（RAINBOW の設定では，単に mule と打つだけで起動出来るようになっています．）このファイルのモードを見てみましょう

     ls -l /usr/local/bin/mule

とすると，ファイルモードの欄に x が表示されているのが分かります．

UNIX のコマンドの多くは， mule のように，実行出来るファイルという形で，ファイルシステムに組み込まれています． /usr/bin というディレクトリには，そのようなファイルがたくさんありますので，見てみましょう．

     ls /usr/bin

これらは，実行可能なファイルですので， ls -l でみると，ファイルモードの欄は皆 x が表示されます．ファイルの数が多いので， ls の表示のスクロールを制御しましょう． less というスクロール制御のコマンドと ls -l をパイプ (—) で繋ぐと１画面文の表示で止まります．

     ls -l /usr/bin | less

次の画面を見るには， space キー，終了するには， q を押します．

実行出来るファイルというのを作成してみましょう．コマンドを並べたファイル（スクリプトといいます．）は実行することが出来ます．次のファイル renshu2.exe を作成して下さい．

     ##### renshu2.exe #####
     echo script file;
     sleep 2;
     cal;
     sleep 1;
     date

普通に作成されたファイルには，実行権 e(x)cute は与えられませんから，このスクリプトを実行するには，ファイルモードを変更する必要があります．

     chmod u+x renshu2.exe

このファイルを実行するには，ディレクトリ名を含めたファイル名を打ちます．現在いるディレクトリ（.）の中の renshu2.exe ですから，

     ./renshu2.exe

とします．このスクリプトは， script file と表示したあと，２秒後に今月のカレンダーを表示し，さらに１秒後に今日の日付と現在の時間を表示します．

<知って得する話>

アクセス権限を３桁の 8 進数表すことができます.

よく使われる権限は

% chmod 777 (ファイル名)   <--- すべての権限を与える.

% chmod 755 (ファイル名) <--- すべての利用者が実行でき, 所有者のみ書き込みができる.

(一般の設定)

% chmod 600 (ファイル名)   <--- 所有者のみ読み書き可能.
% chmod 444 (ファイル名)   <--- 読み出し専用.

他人が自分のディレクトリに入ることは可能であるので, 他のユーザにみられて困るファイルがある場合はすべての権限を削除しておくべきです. そのためには

% chmod 700 (ディレクトリ名)

とすれば, そのディレクトリ内のすべての情報をプロテクトできます.

9 レポート問題

自己紹介を兼ねたメールを私のところに提出すること. (講義に対する要望も書いてください) レポートは特に定めない限り次のように書いてください.

• 名前の書き方: 一行目にコメントとして /*学籍番号 名前 */ と書く.

• 提出先: osaka-report@se.ritsumei.ac.jp

• Subject: メールのタイトルは, 第 n 回問題 m 番目の場合

    ereportno.n-m

として下さい. 今回は ereportno.4-1 です.

• 締め切り:授業のあった翌週の火曜日まで.

今回は 5 月 16 日 (火) です.

10 気になる本

連休中に目を通した本でおもしろいものをあげておきます. (そんな暇があったら論文を書けと云われそうですが)

1. e エコノミーの衝撃, 中谷 巌, 東洋経済 (2000/5/4 発行)

2. 情報リテラシー入門, 一瀬益夫編著, 同友館 (1999/4/15 新版)

3. 情報リテラシー教科書, 井田昌之その他, 共立出版 (2000/2/25 第２版)

4. 最新 UNIX ハンドブック, 伊藤和人, 秀和システム (2000/3/1 発行)

5. パソコン革命の旗手たち, 関口和一, 日本経済社 (2000/3/6 発行)