1.コマンド

ログインした時に,ディスプレイの左上と右下に現れる端末ウインドウは,コンピュータに命令(コマンド(command)といいます)を入力するためのものです. この端末ウインドウに表示されている,``%'' の文字は,コンピュータがコマンドの入力を待ってますよという印で,プロンプト(prompt)といいます.

CNSのコンピュータはこの端末ウィンドウにコンピュータにさせたい命令内容を入力して、仕事をさせます.

コマンドの例として,現在の日付と時刻を表示するdateというコマンドとカレンダーを表示するcalというコマンドを実行してみましょう.

まず、ウィンドウをアクティブの状態にします.プロンプトの後ろに, date と入力します.

% date
	

ここで,Enter キーを押します.Enter キーを押すことにより,dateというコマンドが実行されます.

% date
2001年04月01日(日)03時30分21秒 JST
	

今度はカレンダーを表示するcalコマンドを実行してみましょう.同様にプロンプトの後に cal と入力し Enter キーを押します.

% cal
     2001年  4月
日 月 火 水 木 金 土
 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
% 

	

するとcalコマンドが実行され,上のように今月のカレンダーが表示されます.

calコマンドには次のような使い方もあります.

特定の月のカレンダーを表示させたい時は,calの後に続けて表示させたいカレンダーの月,そしてSpaceキーを押して空白を1つ空けてから表示させたいカレンダーの年を入力します.

例えば,2000年1月のカレンダーが見たいときは, cal 1 2001 と入力すれば,その月のカレンダーが表示されます.

% cal 1 2001
     2001年  1月
日 月 火 水 木 金 土
    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
% 
	

● 練習問題

calコマンドを使って,自分の生年月日が何曜日なのか調べましょう.

2.ディレクトリとツリー構造

ディレクトリ

扱うファイルの数がどんどん増えてくるにしたがって,たくさんのファイルの中から自分の必要とするものを見つけるのは大変です.

例えば下のようにファイルが並んでいたらどうでしょう.この中から目的のファイルを探すのは大変ですし,どこに何があるのかよく分かりませんね.

No Dicectory Files

では,次のようにファイルが「意味のまとまりごと」に分類されていたらどうでしょう.

Classified Files by Directory

上の場合と比べると格段にファイルを探しやすくなりました.たくさんのファイルを意味のまとまり毎に整理するための引出しのようなものがあると,ファイルの管理が楽になります.

このファイルをいくつかまとめてしまっておく引き出しのようなものをディレクトリ(directory)と呼びます.

ツリー構造

ディレクトリの中にはいくつかのディレクトリを入れることができ,その中には,さらにまたディレクトリを入れることができます.外側の大きい方のディレクトリを親ディレクトリ,中に入っている方を子ディレクトリ,またはサブディレクトリと呼びます.これを絵に描くとき,例えば directoryA の中に directoryB とfile3 があるとすると,directoryA の下に directoryB と file3を書いて,線で結びます.さらにdirectoryB の中に入っているファイルも同じようにして書いていきます.すると,木を逆さにしたような形になるので,これをツリー構造(tree structure)と呼びます.根にあたるところ(図では一番上)に一番大きなディレクトリがあり,そこから枝別れするところにディレクトリがあり,そして葉にあたるところには通常ファイルがあります.これは次に説明するファイルパスを理解する上で必要になる重要な概念です.

3.ファイルパス

ファイルのパス名

これまでの説明で,ディレクトリとツリー構造の概念が理解できたと思います.次に個々のファイルやディレクトリを指定する際に必要になるファイルパスという概念と,具体的な指定方法について学習しましょう.このファイルパスという概念は,CNSにおけるファイル操作だけでなく,Webサイトの制作過程にも必要になる重要な概念です.ここでは皆さんが現在使用しているCNSの環境を例にとって解説していきます.

CNSでは,すべてのファイルは巨大なツリー構造のどこかに位置しており,ディレクトリをたどっていくことによってアクセスすることができます.この時,そのファイルの位置を表すものを,そのファイルのパス名(path name)と呼びます.

例えば,ファイルにパス名が付いていることにより,たとえ同じ名前のファイルでも,位置する場所が違えば区別することができるのです.

パス名には,絶対パス名(absolute path name)相対パス名(relative path name)があります.

絶対パス

絶対パスは,ツリー構造の一番上から現在自分がいるディレクトリまでの道筋を全てたどることで,現在位置を表します.

現在自分がいるディレクトリの絶対パスを知るためには pwd というコマンドを使います.

% pwd
/a/fs0501a/t03000tf
	

パス名は,ディレクトリ名を '/ 'で区切って表わします.
ツリー構造の一番上にあるディレクトリをルートディレクトリ(root directory)といいます.ルートディレクトリには名前がなく,常に絶対パス名 '/'で示されます.上の例の場合,現在いる位置は,「ルートディレクトリの下の,aというディレクトリの下の,fs0501aというディレクトリの下のt03000tfというディレクトリの下」ということになります.

ログイン名の前に現れるfs0501aとかfs0601aというディレクトリはファイルサーバーの名前で人によって異なります.しかし,誰のホームディレクトリがどのファイルサーバにあるかを覚えるのは大変なので,/a/fs0501a/や /a/fs0601aという部分をまとめて,'/home' と表わします.

相対パス

現在位置しているディレクトリからすぐ隣や,一つ上のディレクトリに行きたいときに,いちいちルートディレクトリからの長い絶対パスを使うのは不便です.そのため,現在作業しているディレクトリからの相対的な位置関係をパスとして表すこともあり,これを相対パスと言います.

相対パス名はディレクトリをたどる出発点が,ルートディレクトリではなく,現在作業しているディレクトリになります.この現在作業しているディレクトリのことををカレントディレクトリ(current directory)またはワーキングディレクトリ(working directory)と呼びます.相対パス名はカレントディレクトリから見た,相対的な位置を表わします.

カレントディレクトリからツリー構造を下にたどっていくときは,ディレクトリ名を '/' で区切って並べます.例えば,上の図で /home/t03000tf がカレントディレクトリであった時, report1 の相対パス名は

ipl/report1

となります.また,/home/t03000tf/ipl がカレントディレクトリの時は

report1

が相対パスとなります.あるファイルを使って作業したいときは,そのファイルが入っているディレクトリをカレントディレクトリにしておくと,相対パスによる指定がファイル名だけになるので,短くて便利です.

ツリー構造を上に向かってたどるときは,ディレクトリ名ではなく, '..' という記号を使います.例えば,上の図で /home/t03000tf/ipl がカレントディレクトリの時,/home/t03000tf の相対パス名は

..

で,/home の相対パス名は

../..

になります.また,/home/t03000tf/test2 の相対パス名は

../test2

になります.

カレントディレクトリ自身の相対パス名は ' . ' で表します.

絶対パスと相対パスは,先頭が,' / ' かどうかで判断されます. また,先頭にある ' ~ ' は,ホームディレクトリを表すことがあります.' ~ ' だけなら自分のホームディレクトリ,' ~ユーザ名 ' ならそのユーザのホームディレクトリを表します.

注意
' ~ ' がホームディレクトリを表すのは省略形なので,ソフトによっては使えない場合もあります.そのような時は絶対パス名 ' /home/ユーザ名 ' を使います.

ファイルを操作するときは必ずパスと言う概念がついてきます.これからファイルの作成や編集をするときは,ファイルの名前だけでなく,その位置も意識しながら作業するようにしましょう.

4.ファイルの操作

ディレクトリとツリー構造,ファイルパスの概念を使って,実際にディレクトリやファイルの中身を確認したり,操作したりする為のコマンドを学びましょう.

ディレクトリの内容を見る

・今自分がいるディレクトリにあるファイルの一覧を見るためには ls ( --- list )というコマンドを使います.

% ls
Mail            WDataNMC        Wnn6            test1
WAppNMC         Wnn             test
	

今,ホームディレクトリの中には先週作ったファイルと,いくつかの設定ファイル(最初にアカウントを作った時にできたもの)があります.

・.emacs のように先頭が' . 'で始まるファイルは,ソフトの設定に使うファイルなので,普通 は表示されません.それも表示させたい場合は, ls -a と入力します.ここでls のあとに1つ空白をあけてから' - 'をつけて加えたものをコマンドのオプション(option)と言います.オプションをつけることで,コマンドの機能を拡張することができます.

% ls -a
.                       .pgp                    WAppNMC
..                      .signature              WDataNMC
.Xauthority             .winman                 Wnn
.cshrc                  .xsession-errors        Wnn6
.login                  .yumiko                 test
.mh_profile             Mail                    test2
.netscape               News
	

・-l オプションを付けて ls -l と入力すると,ファイルの詳しい情報が表示されます.

% ls -l
total 1304
drwx------   9 s03000hf  student     512   4/20 15:46 Mail/
drwx------   2 s03000hf  student     512   4/ 8 18:01 WAppCNS/
drwx------   2 s03000hf  student     512   4/ 2 20:36 WAppNMC/
drwx------  11 s03000hf  student     512   4/ 8 18:01 WDataCNS/
drwx------   6 s03000hf  student     512   4/12 12:59 WDataNMC/
drwx------   4 s03000hf  student     512   4/12 12:08 Wnn/
drwxrwxrwx   3 s03000hf  student     512   4/18 15:54 Wnn6/
drwx------   2 s03000hf  student     512   4/ 8 18:01 XPAppCNS/
drwx------  15 s03000hf  student     512   4/18 09:32 XPDataCNS/
-rw-r--r--   1 s03000hf  student     204   4/18 11:12 test
-rw-r--r--   1 s03000hf  student     204   4/18 11:12 test2
drwxr-xr-x   2 s03000hf  student     512   4/11 11:18 tmp/
	

1行目の' total 'は,そのディレクトリに存在するファイルの数を表わします.

カレントディレクトリ以外のディレクトリを見たいときは,そのディレクトリの名前を ls の後に書きます.
例えばMailというディレクトリの内容が見たいときは ls Mail と入力します.
この' Mail 'のようにコマンドの後に1つ空白をあけてから付け加えるものをこのコマンドの引数(argument)と言います.

% ls Mail
context   drafts    inbox
	

・コマンドのオプションはこれら以外にも,ファイルを新しい順に表示する -t オプションなどたくさんあります.
・コマンドに対して2つ以上のオプションをつけたい時はスペースで区切って並べます.例えば,全てのファイルの詳しい情報を知るには,-l オプションと -a オプションを同時に使って, ls -l -a と入力します.

● 練習問題

  1. 自分のホームディレクトリにあるファイルのうち最も新しいファイルを見つけましょう.ファイルを新しい順に表示するオプションは -t です.
  2. 次のことを試してみましょう.
    • ls の引数に存在しないディレクトリ名を指定する.
    • ls -l の引数にディレクトリでは無く,通常ファイルを指定する.

カレントディレクトリの移動

自分のいるディレクトリを移動したい(カレントディレクトリを変更したい)時には cd (--- change directry)コマンドを使います.
移動したい先のディレクトリ名(カレントディレクトリにしたいディレクトリ名)を引数として指定します.
引数に指定するディレクトリは相対パスでも絶対パスでも構いません.例えばカレントディレクトリがホームディレクトリだったとして,この直下のMailというディレクトリに移動したい時は cd Mail と,相対パスを入力するか, cd /home/(ログイン名)/Mail というふうに絶対パスを入力します.

% cd Mail
% pwd
/a/fs0501a/t03000tf/Mail
	
% cd /home/t03000tf/Mail
% pwd
/a/fs0501a/t03000tf/Mail
	
ディレクトリの移動

引数を指定せずに cd と入力しただけで Enter キー を押すとと,ホームディレクトリに移動します.

ファイルの内容を見る

エディタを起動しなくても, less コマンドでファイルの中身を見ることができます.
コマンドの引数に内容を見たいファイル名を指定するとそのファイルの内容を表示します.
ファイルの内容が一画面に収まらないときは,最初の一画面を表示して停止します.一画面ずつスクロールするには Space キー ,一行ずつスクロールするには Enter キー を押します. b キー で一画面前に戻ることもできます.
例えば,selfintroduction というファイルの内容を見たいときは less selfintroduction と入力します.

% less selfintroduction
氏名:藤沢太郎
出身地:神奈川県藤沢市
出身高校:…
	
注意
less コマンドで中身を見ることができるのはテキストファイルだけです.

● 練習問題

宝探しゲームをしましょう.
まず,始めるために /pub/sfc/ipl/1a/exercise/islands というディレクトリに移ってください.

% cd /pub/sfc/ipl/1a/exercise/islands
	  
  • cd コマンドでサブディレクトリに移動し,ls コマンドでそこに何があるか調べます.
  • 宝が無いと分かったら,親ディレクトリに移動して別のところを探します.相対パスを使って, cd .. と入力すれば一つ上のディレクトリに移動できます.
% cd ..
	  
  • ファイルがあったら, less コマンドで中を見ます.
  • 自分のいる場所がわからなくなったら pwd コマンドで,カレントディレクトリを表示させます.

端末ウィンドウからファイルを操作するために様々なコマンドがあります.

新しいディレクトリを作る

・新しいディレクトリを作るためには mkdir ( --- make directory )というコマンドを使います.

% ls
test
% mkdir testdir
% ls
test    testdir
% ls -a testdir
.       ..
%

ファイルのコピーを作る

・ファイルのコピーを作るためには cp ( --- copy ) というコマンドを使います.

cp の後にコピー元のファイルと,新しく作るファイルの名前を空白で区切って書きます.
新しく作るファイルの代わりにディレクトリ名を指定すると,そのディレクトリの中に同じ名前で新しいファイルが作られます.

% ls
test    testdir
% cp test temp
% ls
temp    test    testdir
% cp test testdir
% ls testdir
test
%

● 練習問題

隣の人のホームディレクトリ下にあるファイルを自分のホームディレクトリにコピーしましょう.

ファイルの移動・ファイル名の変更

ファイルの移動や、ファイル名の変更には mv ( --- move ) というコマンドを使います.

% ls
temp    test    testdir
% mv temp testdir
% cd testdir
% ls
test    temp
% mv temp temp2
% ls
test    temp2
%

注意
ファイル名の変更の際,変更先のファイル名が既に存在するものであった場合,そのファイルに上書きされ元の内容は消えてしまうので注意.
例えば上の例の場合,temp2 というファイルをtest という名前に変更する場合,元のtest というファイルの内容は消えてしまい,temp2 の内容が上書きされてしまいます.

ファイルの削除

ファイルの削除を行うには, rm ( --- remove ) というコマンドを使います.
rm に続いて削除したいファイル名を引数として指定します.空白で区切って複数のファイル名を指定することもできます.

% ls
temp2   test
% rm temp2
% ls
test
%
注意
一度消したファイルを復元することはできません.

ディレクトリの削除

ディレクトリの削除を行うには, rmdir ( --- remove directory ) というコマンドを使います.

削除したいディレクトリ名を引数として指定します.空白で区切って複数のディレクトリ名を指定することもできます.
ただし,ディレクトリの下にファイルがある場合には,そのディレクトリは削除できません.そのような場合,ディレクトリの下にあるファイルを全て削除するか移動するかした後,ディレクトリを削除することになります .

% ls
test     testdir
% rmdir testdir
% ls
test
%

5.ファイルのアクセス権

CNS には,学部生,大学院生,卒業生,教職員など7,300人以上のユーザがいます.共同作業をする時はお互いが持っているファイルの内容が参照できると便利なのですが,もし全く自由に他人のファイルの内容を見たり,変更できたりすると,いろいろな問題が起きる可能性があります.そこで,個々のユーザーはファイルやディレクトリごとに,他のユーザからのアクセスを許可したり,禁止したりするアクセス権(access right)を適切に管理する必要があります.アクセス権の管理は,ファイルやディレクトリに対して保護モード(アクセス権モード)を設定する事で行います.

保護モード(アクセス権モード)とは「誰が」,「何を」,「どうする」という組み合わせに対して, 許可か禁止かを決めたものです.「誰が」は,次の3通りがあります.

グループは CNS の管理者によって決められていて,勝手に変更できません.学生はすべて同じグループのメンバになっています.「どうする」にも3通りがあります.

実行とは,通常ファイルの場合はコマンドとして使う,ディレクトリの場合は cd コマンドでそこへ移動する,ということです.「誰が」と「どうする」の組合わせは3×3=9通りあります.「何を」に相当するファイルとディレクトリごとに,この9通りのそれぞれを許可するか,禁止するかが決まっています.現在の保護モードの状態を調べるには,ls コマンドに -l オプションを付けます.

% ls -l
total 10615
drwx------  40 t03000tf  student       512 May  1 01:01 Mail
drwx------   2 t03000tf  student       512 Apr  1 18:53 WAppNMC
drwx------   2 t03000tf  student       512 Apr  1 18:53 WDataNMC
drwxrwxrwx   3 t03000tf  student       512 Apr 19 17:00 Wnn6
-rw-r--r--   1 t03000tf  student       153 Apr 20 15:30 test
-rw-r--r--   1 t03000tf  student       150 Apr 20 15:39 test2
%

ファイルに関するいろいろな情報が表示されますが,一番左側にあるのが,種別と保護モードです.最初の文字は種別で,普通のファイルは「-」,ディレクトリは「d」です.次の9文字は3文字ずつ組になっていて,それぞれ u, g, o の r, w, x が許可されているかを示します.「r」,「w」,「x」は許可,「-」は禁止を示します.

標準設定では,新しく作ったファイルは rw-r--r--,ディレクトリは rwxr-xr-x になりますので,他のユーザは変更はできませんが,内容を見ることはできます.Mail (メールを保存するディレクトリ)は,プライバシーの問題がありますので,rwx------ になっています.

保護モードの変更

ファイルの保護モードを変更するには chmod というコマンドを使います.chmod コマンドの最初の引数で,どのように変更するかを指定します.「誰が」(u,g,o)と「どうする」(r,w,x)を「+」または「-」でつなぎます.「+」は許可する,「-」は禁止するということです.2番目の引数で変更したいファイル名またディレクトリ名を指定します.

例えば test というファイルを自分以外の人が読むことができないようにしたいときは, chmod go-r test と入力します.

% ls -l
total 10615
drwx------  40 t03000tf  student       512 May  1 01:01 Mail
drwx------   2 t03000tf  student       512 Apr  1 18:53 WAppNMC
drwx------   2 t03000tf  student       512 Apr  1 18:53 WDataNMC
drwxrwxrwx   3 t03000tf  student       512 Apr 19 17:00 Wnn6
-rw-r--r--   1 t03000tf  student       153 Apr 20 15:30 test
-rw-r--r--   1 t03000tf  student       150 Apr 20 15:39 test2
% chmod go-r test
% ls -l
total 10615
drwx------  40 t03000tf  student       512 May  1 01:01 Mail
drwx------   2 t03000tf  student       512 Apr  1 18:53 WAppNMC
drwx------   2 t03000tf  student       512 Apr  1 18:53 WDataNMC
drwxrwxrwx   3 t03000tf  student       512 Apr 19 17:00 Wnn6
-rw-------   1 t03000tf  student       153 Apr 20 15:30 test
-rw-r--r--   1 t03000tf  student       150 Apr 20 15:39 test2
%

● 練習問題

隣の人と組みになり以下のことをやってみましょう.
  1. 自分の作ったファイルの中から一つ(たとえば test)を選んで,その保護モードを自分以外の人が内容を見られない(rw-------)ようにしなさい.
  2. 隣の人の rw------- のテキストファイルの内容を less コマンドで見てみなさい.
  3. 隣の人の rwx------ のディレクトリの内容を ls コマンドで表示してみなさい.