[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

情報処理IIA(HTML入門)第9回

目次 索引
9.1 シェルとコマンド
9.1.1 端末装置
9.1.2 コマンド
9.1.3 オンラインマニュアル
9.2 ファイル管理コマンド
9.2.1 pwdコマンド
9.2.2 lsコマンド
9.2.3 lessコマンド
9.2.4 cdコマンド
9.2.5 cpコマンド
9.2.6 rmコマンド
9.2.7 mvコマンド
9.2.8 mkdirコマンド
9.2.9 rmdirコマンド
9.2.10 chmodコマンド
9.3 演習9
9.4 レポート課題
calコマンド  cdコマンド  chmodコマンド  cpコマンド  dateコマンド  lessコマンド  lsコマンド  manコマンド  mkdirコマンド  mvコマンド  pwdコマンド  rmdirコマンド  rmコマンド  オンラインマニュアル  コマンド  シェル  引数  プロンプト 

9.1 シェルとコマンド

9.1.1 端末装置

その昔、コンピュータを利用するとき、ユーザはテレタイプとよばれる装置を操作しました。 テレタイプとは、タイプライタに電話がついたようなもので、ユーザが文字をタイプしますと、その文字列が電話回線を通じて遠くのコンピュータに伝わり、今度はコンピュータからの文字列が電話回線を通じてテレタイプに伝わり、紙に印刷されるという仕組みでした。

1回目の授業で用いた端末エミュレータは、このテレタイプのような端末装置のまねをするソフトです。 タイプライタの代りにキーボードとディスプレーを使いますが、文字列のやり取りでコンピュータを操作する点は同じです。

どこにでもパソコンがあり、グラフィカルなウィンドウを見ながらマウスでパソコンが操作できる現在、なぜテレタイプ時代のまねをするのか不思議に思えるでしょう。 端末エミュレータ(端末ソフト)は、以下のような状況では役に立つのです。

9.1.2 コマンド

端末エミュレータの中では、 シェルshell , 具体的には tcsh)とよばれる機能(プログラム)が働いています。 シェルは、ユーザから入力された文字列を解釈し、それに応じたプログラムを実行させます。 シェルを用いますと、コンピュータに登録されているほとんどすべてのプログラムが実行できます。

ここで、端末エミュレータを開きます。 ウィンドウの左下に次のような文字列が表示されているのに注目してください。

b00a001@Ampere:~%

この文字列を プロンプトprompt )といいます。 b00a001 の部分と Ampere の部分は、ユーザとコンピュータによって異なります。 プロンプトの表示は、シェルがユーザからの入力を待っていることを意味します。

次に、入力したい文字列の文字を順にタイプしてください。 間違ってタイプしたときは、Delete キーをタイプすると取り消せます。 Enter キーをタイプすると入力終了となります。

例えば、

b00a001@Ampere:~% xyz
xyz: Command not found.
b00a001@Ampere:~%

シェルに文字列 xyz を入力したわけですが、そのコマンドは見つからないというメッセージが表示されました。 続いて、文字列 date を入力してみます。

b00a001@Ampere:~% date
Thu Jun  5 13:31:49 JST 2003
b00a001@Ampere:~%

今度は、今日の日付と今の時刻が表示されました。

コンピュータに登録されているプログラムには名前がついています。 例えば、今日の日付と今の時刻を出力するプログラムの名前は date です。 シェルは、入力が与えられますと、その文字列をプログラムの名前と見なします。 そして、その名前をある順番にしたがってシステムの中から検索します。 もし見つかれば、その名前のプログラムを実行します。 なければ、コマンドが見つからないというメッセージを表示します。 この例では、 xyz という名前が見つからなかったので、コマンドが見つからないと表示され、 date という名前が見つかったので、今日の日付と今の時刻が表示されたのです。

実は、シェルへの入力で、プログラムの名前と見なされるのは、空白で区切られた最初の成分だけです。 残りの成分は、そのプログラムへの引数と見なされます。 引数argument )とは、プログラムを実行するときに渡されるデータです。 例えば、カレンダーを出力するプログラム(名前は cal )では、

b00a001@Ampere:~% cal
     2003年  6月
日 月 火 水 木 金 土
 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

b00a001@Ampere:~% cal 7 2003
     2003年  7月
日 月 火 水 木 金 土
       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

b00a001@Ampere:~%

引数を書かなければ、今月のカレンダーが出力されます(CALendar)。 引数を書きますと、西暦2003年7月というデータがプログラムに渡され、その月のカレンダーが出力されます。

プログラムによっては、必ず引数を書かなくてはいけません。 また、引数の形式もプログラムによってまちまちです。 引数の順序を変えますと、普通はプログラムに異なるデータが渡されます。 例えば、 cal 2003 7 では、西暦7年2003月となります。

プログラムの名前とその引数の並びを、ここでは コマンドcommand )とよぶことにします。 端末エミュレータでは、コマンドを入力することによってコンピュータを操作することになります。 文字列をタイプするのは面倒かもしれませんが、コマンドさえ覚えれば、コンピュータに備わっているほとんどすべての機能を働かせることができるのです。

9.1.3 オンラインマニュアル

プログラムの名前は知っているけれど、何をするものなのか分からないときや、引数の書き方を確認したいときは、マニュアルがすぐに見られれば便利です。 UNIXでは、コマンドでマニュアルが表示できます。 これを、 オンラインマニュアルon-line manual )といいます。

オンラインマニュアルを表示するコマンドは man   name です(MANual)。 ここで、 name はプログラムの名前です。 例えば、

b00a001@Ampere:~% man cal

と入力しますと、 cal コマンドのマニュアルが表示されます。 マニュアルを表示しているときのキーボードの割り当ては、以下の表の通りです。

表 9.1  man コマンドにおけるキーボードの割り当て
キーボード 機能
q 表示終了
h ヘルプの表示
Space 一画面分次の表示
Enter 一行分次の表示
b 一画面分前の表示
k 一行分前の表示

9.2 ファイル管理コマンド

情報処理Iでは、ファイルマネージャを用いてファイルの管理をしました。 この授業では、端末エミュレータを用いてファイルの管理をします。 ファイルの管理に関する基本的なコマンドを説明します。

9.2.1 pwdコマンド

pwdコマンド (Print Working Directory)は、カレントディレクトリの絶対パス名を出力します。

例 9.1 
b00a001@Ampere:~% pwd
/home/b00a/b00a001
b00a001@Ampere:~%

9.2.2 lsコマンド

lsコマンド (LiSt)は、引数がなければ、カレントディレクトリの内容を並べて出力します。 引数がディレクトリのパス名ならば、そのディレクトリの内容を並べて出力します。 引数がファイルのパス名ならば、そのパス名を出力します。

例 9.2 
b00a001@Ampere:~% ls
Mail/       Maildir/    WABI/       WWW-local/
b00a001@Ampere:~% ls WWW-local
index.html   index.html~  ip2a/        photo.jpg
b00a001@Ampere:~% ls WWW-local/ip2a
ex8.html   ex8.html~
b00a001@Ampere:~% ls WWW-local/ip2a/ex8.html
WWW-local/ip2a/ex8.html
b00a001@Ampere:~%

ls コマンドで、 ls -l  〜としますと、アクセス権モード、所有者、所有グループ、サイズ、最終変更日時などの管理情報が出力されます。

例 9.3 
b00a001@Ampere:~% ls -l WWW-local/ip2a/ex8.html
-rw-r--r--   1 b00a001  school         9  5月 29日  13:40 WWW-local/ip2a/ex8.html
b00a001@Ampere:~%

9.2.3 lessコマンド

lessコマンド は、ファイルのパス名を引数に取り、そのファイルの内容を表示します。 バイナリファイルは指定しないでください。 表示しているときのキーボードの割り当ては、 man コマンドと同じです。

表 9.2  less コマンドにおけるキーボードの割り当て
キーボード 機能
q 表示終了
h ヘルプの表示
Space 一画面分次の表示
Enter 一行分次の表示
b 一画面分前の表示
k 一行分前の表示

9.2.4 cdコマンド

cdコマンド (Change Directory)は、引数がなければカレントディレクトリをホームディレクトリに変更します。 引数がディレクトリのパス名ならば、カレントディレクトリをそのディレクトリに変更します。

例 9.4 
b00a001@Ampere:~% ls
Mail/       Maildir/    WABI/       WWW-local/
b00a001@Ampere:~% cd WWW-local
b00a001@Ampere:~/WWW-local% pwd
/home/b00a/b00a001/WWW-local
b00a001@Ampere:~/WWW-local% cd
b00a001@Ampere:~% pwd
/home/b00a/b00a001
b00a001@Ampere:~%

9.2.5 cpコマンド

cpコマンド (CoPy)には、2つの形式があります。

cp   file1   file2

では、パス名 file1 で表されるファイルの内容を、パス名 file2 で表されるファイルにコピーします。

cp   file...   directory

では、パス名の並び file... で表される一つ以上のファイルの内容を、パス名 directory で表されるディレクトリの中に、それぞれ同じファイル名でコピーします。

もしコピー先のファイルがすでにあれば、そのファイルに上書きされます。

例 9.5 
b00a001@Ampere:~% ls
Mail/       Maildir/    WABI/       WWW-local/
b00a001@Ampere:~% ls WWW-local
index.html   index.html~  ip2a/        photo.jpg
b00a001@Ampere:~% cd WWW-local/ip2a
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~
b00a001@Ampere:~/WWW-local/ip2a% cp ex8.html test.html
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~  test.html
b00a001@Ampere:~/WWW-local/ip2a%

9.2.6 rmコマンド

rmコマンド (ReMove)は、ファイルのパス名を引数に取り、そのファイルを削除します。

なお、一度削除したファイルは(通常の操作では)復元できません。 ファイルの削除は慎重に行ってください。

例 9.6 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~  test.html
b00a001@Ampere:~/WWW-local/ip2a% rm test.html
rm: test.html を消去しますか (yes/no)? yes
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~
b00a001@Ampere:~/WWW-local/ip2a%

9.2.7 mvコマンド

mvコマンド (MoVe)には、2つの形式があります。

mv   file1   file2

では、パス名 file1 で表されるファイルを、パス名 file2 で表されるファイルに移動します。 同じディレクトリの中で移動させますと、ファイル名を変更したことになります。

mv   file...   directory

では、パス名の並び file... で表される一つ以上のファイルを、パス名 directory で表されるディレクトリの中に移動します。

もし移動先のファイルがすでにあれば、そのファイルに上書きされます。

例 9.7 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~
b00a001@Ampere:~/WWW-local/ip2a% cp ex8.html test2.html
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html    ex8.html~   test2.html
b00a001@Ampere:~/WWW-local/ip2a% mv test2.html test3.html
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html    ex8.html~   test3.html
b00a001@Ampere:~/WWW-local/ip2a%

上記の通り、 mv コマンドを用いますと、ファイル名の変更ができます。 mv コマンドで、2つのファイルのファイル名を交換する(ファイルの内容を交換するとも見なせます。)には、多少の工夫が必要です。

今、ファイル ex9a.html の内容が"Good afternoon!"であり、ex9b.thml の内容が"Good-bye!"であるとします。 この2つのファイルのファイル名を交換する場合、

mv ex9a.html ex9b.html
mv ex9b.html ex9a.html

としてはいけません。 なぜならば、はじめのコマンドで ex9a.html の内容が ex9b.html に上書きされ、"Good-bye!"という内容が消えてしまうからです。 正しくは、

mv ex9a.html temp
mv ex9b.html ex9a.html
mv temp ex9b.html

とします。 (カレントディレクトリに temp というファイルやディレクトリはないものとします。) 実際、はじめのコマンドで、ex9a.html がなくなり、temp の内容が"Good afternoon!"となります。 次のコマンドで、ex9b.html がなくなり、ex9a.html の内容が"Good-bye!"となります。 最後のコマンドで、temp がなくなり、ex9b.html の内容が"Good afternoon!"となるわけです。

9.2.8 mkdirコマンド

mkdirコマンド (MaKe DIRectory)は、ディレクトリのパス名を引数に取り、その名前のディレクトリを作成します。

例 9.8 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html    ex8.html~   test3.html
b00a001@Ampere:~/WWW-local/ip2a% mkdir trial
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html    ex8.html~   test3.html  trial/
b00a001@Ampere:~/WWW-local/ip2a% ls trial
b00a001@Ampere:~/WWW-local/ip2a% mv test3.html trial/test4.html
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~  trial/
b00a001@Ampere:~/WWW-local/ip2a% ls trial
test4.html
b00a001@Ampere:~/WWW-local/ip2a%

ディレクトリの中にディレクトリがあるようなものを作成する場合、木の構造の上からディレクトリを作成しますとうまくいきます。 例えば、ディレクトリ top の中に bottom があるようしたいのでしたら、

mkdir top
cd top
mkdir bottom

とします。

9.2.9 rmdirコマンド

rmdirコマンド (ReMove DIRectory)は、ディレクトリのパス名を引数に取り、そのディレクトリを削除します。 ディレクトリが削除できるのは、その中にファイルもディレクトリもなく、カレントディレクトリがそのディレクトリより上であるときに限ります。 したがって、ディレクトリの中にディレクトリがあるようなものを削除する場合、木の構造の下からディレクトリを削除することになります。

例 9.9 
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~  trial/
b00a001@Ampere:~/WWW-local/ip2a% ls trial
test4.html
b00a001@Ampere:~/WWW-local/ip2a% rm trial/test4.html
rm: trial/test4.html を消去しますか (yes/no)? yes
b00a001@Ampere:~/WWW-local/ip2a% ls trial
b00a001@Ampere:~/WWW-local/ip2a% rmdir trial
b00a001@Ampere:~/WWW-local/ip2a% ls
ex8.html   ex8.html~
b00a001@Ampere:~/WWW-local/ip2a%

9.2.10 chmodコマンド

chmodコマンド (CHange MODe)は、ファイルやディレクトリのアクセス権を変更します。 形式は、

chmod   mode   file

です。 ここで mode は、アクセス権モードを示す3けたの数です。 この3けたの数の作り方は次の通りです。 はじめに、アクセス権r, w, xを表にしたがって数に置き換えます。 (2進数を知っていれば、この対応はすぐ理解できるでしょう。)

表 9.3  アクセス権と数の対応
アクセス権
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7

そして、所有者に対して、所有グループのユーザに対して、その他のユーザに対してのそれぞれのアクセス権に対応する数を並べて3けたの数を構成します。

例えば、

b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html
-rw-r--r--   1 b00a001  school         9  5月 29日  13:40 ex8.html
b00a001@Ampere:~/WWW-local/ip2a% chmod 600 ex8.html
b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html
-rw-------   1 b00a001  school         9  5月 29日  13:40 ex8.html
b00a001@Ampere:~/WWW-local/ip2a% chmod 444 ex8.html
b00a001@Ampere:~/WWW-local/ip2a% ls -l ex8.html
-r--r--r--   1 b00a001  school         9  5月 29日  13:40 ex8.html
b00a001@Ampere:~/WWW-local/ip2a%

はじめの変更で、ファイル ex8.html は所有者以外の人が読めなくなります。 (他人に読まれたくないファイルもあるでしょう。) 次の変更で、このファイルは所有者が書き込めなくなります。 (間違って更新したくない場合に有効です。 更新したくなったら、アクセス権モードをもとに戻せばよいのです。)

なお、特に指定しないならば、新規のファイルやディレクトリのアクセス権モードは次のように決められます。

したがって、普通に使っているうちは、アクセス権モードにそれほど気を遣う必要はありません。


9.3 演習9

シェルとコマンドについて、以下の問いに答えなさい。 ここで、ディレクトリとフォルダは同義語とします。

問1. シェルの説明として適切なものを次から選びなさい。

A. シェルとは、ユーザから入力されたコマンドを解釈し実行するプログラムです。
B. シェルとは、ユーザが個人的に利用できるディレクトリで、システムの利用開始時にカレントディレクトリとして設定されます。
C. シェルとは、ユーザのフルネームを表す文字列です。一般的にユーザ名とは異なります。
D. シェルとは、ユーザのみが知っている文字列で、システムの利用開始時にユーザ名とともに入力されます。

問2. コマンドの引数に関する説明として適切なものを次から選びなさい。

A. コマンドの引数とは、実行されるプログラムの名前のことです。
B. コマンドの引数は、プログラムに渡されるデータです。
C. コマンドの引数は、どの場合でも書かなければいけません。
D. コマンドの引数は、どの順序で書いても必ず同じことが行われます。

問3. カレントディレクトリが

/home/b00a/b00a001/WWW-local

だとしますと、これを

/home/b00a/b00a001/WWW

に変更するにはどのコマンドが適切か、次から選びなさい。

A. cd WWW
B. cd WWW/..
C. cd ../WWW
D. cd ../../WWW

問4. コマンド cp may.html june.html を実行しますと、ファイル may.html の内容がファイル june.html にコピーされます。 もし、すでに june.html がある場合は何が行われるか、次から選びなさい。

A. may.html が june.html より新しいときに、may.html の内容が june.html に上書きされます。
B. may.html が june.html より古いときに、may.html の内容が june.html に上書きされます。
C. may.html の内容が june.html の内容の後に追加されます。
D. may.html の内容が june.html に上書きされます。

問5. コマンド rm は指定されたファイルを削除しますが、削除されたファイルは後で復元できるかどうか、次から適切な説明を選びなさい。

A. 復元できません。
B. システム管理者に依頼すれば、復元してもらえます。
C. 「ゴミ箱」の中にありますので、そこから元に戻せます。
D. 隠しファイルになっていますので、ファイル名を変更すればよいです。

問6. 今、カレントディレクトリに index.html と index.html~ という2つのファイルがあるとします。 この2つのファイルの内容を交換する適切な方法を次から選びなさい。 ここで、カレントディレクトリに temp というファイルやディレクトリはないものとします。

A.
mv index.html temp
mv index.html index.html~
mv temp index.html~
B.
mv index.html temp
mv index.html~ index.html
mv temp index.html~
C.
mv index.html temp
mv index.html index.html~
mv temp index.html
D.
mv index.html temp
mv index.html~ index.html
mv temp index.html

問7. カレントディレクトリが

/home/b00a/b00a001/WWW-local

だとしまして、このディレクトリの中には kanagawa というファイルもディレクトリもないとします。 このとき、ディレクトリ

/home/b00a/b00a001/WWW-local/kanagawa/yokohama

を作成する適切な方法を次から選びなさい。

A.
mkdir yokohama
cd yokohama
mkdir kanagawa
B.
mkdir yokohama
cd kanagawa
mkdir kanagawa
C.
mkdir kanagawa
cd kanagawa
mkdir yokohama
D.
mkdir kanagawa
cd yokohama
mkdir yokohama

問8. コマンド rmdir の説明として適切なものを次から選びなさい。

A. 指定されたディレクトリが空のとき、そのディレクトリを削除します。
B. 指定されたディレクトリを空にします。
C. 指定されたディレクトリを空にして、そのディレクトリを削除します。
D. 指定されたディレクトリが空でないとき、そのディレクトリを空にしてからそのディレクトリを削除します。

問9. ファイル test.html のアクセス権を、自分は読み書きできるが他人は何もできないと変更したいとします。 適切なコマンドを次から選びなさい。

A. chmod 400 test.html
B. chmod 600 test.html
C. chmod 004 test.html
D. chmod 006 test.html

問10. コマンド mv ~/test.html . を実行しますと何が行われるか、次から選びなさい。

A. ホームディレクトリにあるファイル test.html をカレントディレクトリに移動します。
B. ホームディレクトリにあるファイル test.html をルートディレクトリに移動します。
C. ルートディレクトリにあるファイル test.html をカレントディレクトリに移動します。
D. ルートディレクトリにあるファイル test.html をホームディレクトリに移動します。

9.4 レポート課題

今日の演習9の解答をkonishi@twcu.ac.jpあてにメールで送ってください。 メールには、学生番号、氏名、科目名、授業の日付け(6/5)を明記してください。


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2003年6月5日更新
konishi@twcu.ac.jp
Copyright (C) 2003 Zenjiro Konishi. All rights reserved.