情報科学概論
2000.4.25 (5.2改訂)
- 本日の作業内容
- ログアウト
- 停止
- Webテキストの確認
前回のエレクトロニクスセミナーAにおいて、授業内容のWebページの見方を簡単に紹介した。今回も、復習を兼ねて、もう一度確認しておく。
ログイン後にstartxコマンドにより、Xサーバを立ち上げ、FVWM95を起動する。xtermの中で、
$ netscape &
とするか、ランチャーの中のnetscapeボタンを押して、Netscape Communicatorを起動する。初めて起動するときには使用許諾権に合意するかどうかの質問が表示される。使用するのなら受諾する。その後、初期設定エラーのメッセージが表示されることがあるが、構わずOKをクリックすると実際のNavigatorウィンドウの描画が始まる。
現在のFVWMの設定では新たにウィンドウを開くときには、マウスでウィンドウ左上角の位置を左クリックにより決める必要があるので注意すること。
Location Toolbarと呼ばれるBookmarkの表示がある場所の白い四角の枠の中に
www.ecs.shimane-u.ac.jp/~nawate
と入力してEnterキーを押すか、二回目以降ならば枠の右側の下向き三角を左クリックして過去のページ一覧を表示させ、上のURLを選択する。ページが表示されて、もし文字が化けていたらViewメニューから
View --> Character Set --> Japanese (Auto-Detect)
の順に選択していくと日本語が表示できるようになる。次回から起動時に自動的に日本語を表示できるようにするためには、上の選択を行った後に同じように
View --> Character Set --> Set Default Character Set
を選択しておく。慣れてきたならばKterm上で
$ netscape http://www.ecs.shimane-u.ac.jp/~nawate &
などとすると、目的のページを最初から開くようにしてNetscapeを起動することも出来るので、活用すると便利である。
コマンド基礎
本日の作業で重要なコマンドは以下に示すものである。順に説明する。
- ディレクトリ作成 mkdir
データやファイルの効率的な保存、整理のために目的や内容別に分類することは重要である。Linuxの場合ではWinのようなフォルダという呼び方は通常しないで、ディレクトリと言うので、ディレクトリごとに目的を決めて整理する。ディレクトリを作るには
$ mkdir script
などとして、カレントディレクトリに作りたいディレクトリの名前を引数として与えて作製する。深い階層まで一気にディレクトリを作りたい場合には
$ mkdir -p aaa/bbb/ccc/ddd/eee
などとすると、まず、aaaというディレクトリを作り、その中にbbb、さらにその中にccc、次に、dddというディレクトリを作った後にeeeというディレクトリを作る。慣れないうちは使わない方がいいかもしれない。詳しくは、
$ man mkdir
をして確認すること。
- 属性変更 chmod
マルチユーザで利用するUNIX系のシステムでは個々のファイルに読み書き実行の属性を与えることにより、自分だけが見ることができるファイル、誰でも見ることが出来たり、実行できたりするファイルとという区別を行う。自分のホームディレクトリにあるファイルも属性によっては他人が見ることができるので、ファイルの属性には注意すること。ファイルの属性は
$ ls -l
で確認することが出来る。例えば、以下のようなファイルがあったとする。
-rw-rw-r-- 途中省略 hoge.txt
上のhoge.txtというファイルは自分を含めて誰でも読むことができ(rが全てのユーザについている)、自分とグループのユーザは書き込むことが出来る(wがある)が、その他のユーザは書き込むことができない、という属性を持っている。また、
-rwxrwxr-x 途中省略 hoge.rb
というファイルは上のhoge.txtに比べてxという属性が付与されている。これは、実行可能という意味で、実際にスクリプトやプログラムを実行することが出来ることを示している。
ディレクトリの場合には、
drwxr-xr-x 途中省略 huga
の様になっていると、ディレクトリ内部を検索するできるというのがxという属性の意味である。xが付いてないユーザではディレクトリの中にあるファイルを見ることができない。
さて、上記のような属性を変更するコマンドがchmodであるが、オプションや引数の使い方が慣れないうちは難しいので、注意して操作する必要がある。単純な利用法はそれぞれのユーザにどの属性を与えたり取り上げたりするかを明示的にオプションに入れる形式で、
$ chmod ug+x,o-r hoge.txt
とすると、自分(ユーザ、u)とグループ(g)に+xで実行権限を与え、その他のユーザ(o, Other)からは-rで読み取りの権限を取り上げている。このコマンドを実行すると、上で
-rw-rw-r--
だった属性が
-rwxrwx---
へと、変更される。もう一つの利用法は、8進法の数値を使う方法で、以下のようなマトリックスを理解する必要がある。
| ユーザ (所有者) | グループ | その他 |
読みとり | 4 | 4 | 4 |
書き込み | 2 | 2 | 2 |
実行 | 1 | 1 | 1 |
実際に属性を表現するときには各列の縦の和を取ることにより0〜7の数字を用いて表わす。上の表を参照することにより
-rw-rw-r--
のような属性は数値で表わすと664となる。先程例に挙げた
chmod ug+x,o-r hoge.txt
というコマンドの代わりに
$ chmod 770
とすると、同じような結果が得られる。
現在使っているシステムではデフォルトで664という属性のファイルが作成されるので自分専用のファイルを作成した場合などには必ず属性を660や600に変更すること。
Ruby入門
- スクリプト言語について
詳しくは教科書のp.21にあるようにコンパイルなどの作業無しで記述したプログラムがすぐに動くような言語をスクリプト言語と呼ぶ。また、インタープリタ言語と呼ぶこともある。こちらは、ソースコードを逐次解釈しながら動作することからつけられた名前である。
この講義で学習するRubyの他に、Perlが有名である。また、Basicもかつてはよく使用されたスクリプト言語である。
- エディタ(XEmacs)によるスクリプト作成法
スクリプトを作成するには文字を入力して編集する作業が必要であり、そのためにテキストエディタ(単にエディタと呼ぶ)が用いられる。Linuxにおけるエディタは主にEmacs系とvi系に二分されるが、先週のエレクトロニクスセミナーAで述べたように初心者に操作がわかりやすいという利点でXEmacsを使用する。
現在のディレクトリがホームディレクトリであるなら、
$ mkdir script
$ cd script
として、scriptというディレクトリの中から
$ xemacs hello.rb &
として、hello.rbという名前のスクリプトを作成する準備をする。
XEmacsが起動したら、テキスト入力エリアに
print "Hello World\n"
と入力する。入力が終わったら、
C-x C-s
で作成したスクリプトを保存する。再びKtermのウィンドウに戻り、
$ ruby hello.rb
というコマンドを実行してみる。画面にどのような文字列が表示されただろうか?
今実行したのは「Hello Worldという文字列を標準出力に出力しなさい」という命令文をRubyというインタープリタが解釈した結果である。実は、今作成したhello.rbの内容はPerlという別のスクリプト言語と同じ構文なので、
$ perl hello.rb
としても、同じ動作をする。ここで、UNIX系のOSにおいては、ほとんどの場合ファイル名の.*のような拡張子は特定のアプリケーションと相関が無いことに気付いただろうか。拡張子が.rbでも.plでも動作に影響はない。
- スクリプトの動作
さて、スクリプト(台本)と言うからには、今のようにいちいちコマンドを与えているようでは物足らない。特定の筋書きに沿った動作を自動的に行うには以下のような作業が必要である。
XEmacsのウィンドウに戻り、ファイルの先頭に
#!/usr/bin/ruby
# Hello World
を付け加える。一行目の#!で始まる行はruby本体が格納されている場所の絶対パスを示し、シェルにRubyの所在を教えている。二行めは#で始まっているが、多くのスクリプト言語と同様にRubyにおいても#で始まる行はコメント行として実際の動作に関係ない。
ファイルの修正が終わったら、
C-x C-s
で保存し、Ktermのウィンドウに戻る。ls -lというコマンドを実行すると
-rw-rw-r-- 途中省略 hello.rb
という属性になっているはずである。このままでは、実行権限が無いのでこのスクリプトは動作しない。そこで、前に説明したchmodコマンドを利用して
$ chmod u+x hello.rb
を実行し、実行属性を与える。ls -lで実行属性を確認したら
$ ./hello.rb
として動作を確認する。属性変更が正しく行われていれば先程と同様にKtermの
Hello World
が表示されたはずである。
ここで、先程のファイル名の先頭に./が付いている。「.」は以前に相対パスのところで説明したカレントディレクトリを意味する記号である。通常のコマンド(lsやpwdはじめ、ほとんどの場合)は/usr/binディレクトリにコマンドが格納されている。本来は/usr/bin/lsとなるが、それでは面倒なのでPATHという変数を設定することにより、特定のディレクトリに関しては絶対パスを記述しなくてもコマンドが動作するようになっている。そのPATHの内容は、
$ export
により見ることが出来るが、通常は自分のホームディレクトリ及びその下に位置するディレクトリにはPATHが通っていない。そこで、現在のscriptディレクトリにあるhello.rbというコマンドであることを明示しないとシステムはコマンドのありかを理解できないので、./を先頭につけて現在のディレクトリにあるコマンドであることを教える必要がある。
ちなみに、先程のhello.rbをXEmacs上で一行目を
#!/usr/bin/perl
として、
C-x C-w
により、hello.plという名前で保存し、同様にKterm上で
$ ./hello.pl
としても同じ結果が表示される。しかし、今回は表示を行ったのは別のスクリプト言語であるPerlである。
先程よりスクリプトという言葉が多く出てくるが、スクリプト言語でないC言語ではどうなるであろうか。XEmacsのウィンドウに戻り、
C-x C-f
の操作により新しいファイルを開く。ファイルの名前をhello.cとしておく。ファイルの中身は以下のようにする。
/* Hello World*/
#include <stdio.h>
main()
{
printf("Hello World\n");
}
入力が終わったら、
C-x C-s
で保存し、次にコンパイルという作業を行う。LinuxではフリーのCコンパイラとしてgccというコマンドが用意されているので、
$ gcc hello.c
とすると、何もエラーが無ければgccはすぐに終了し、同じディレクトリにa.outというファイルが作成される。この属性は自動的に実行属性が付与されており、
$ ./a.out
により、同じようにHello Worldを表示する。ただし、ここで実際に行ってみたように、C言語においてはコンパイルという作業を通して実行ファイルを作成しないと実際には動作しない。スクリプト言語の手軽さがわかると思う。
- Ruby概観
これに関しては、教科書を参照しながら進める。
ログアウト
前回、説明したように通常のUNIX系のシステムではユーザはログアウトという作業を行って自分が端末の使用を終了するだけでシステム停止は通常は行わない。教室では必要に応じて電源を切ることが出来るようになっているが、ログアウトの仕方も知っておく必要がある。特に、先週ログアウトするだけでよいという指示を出したにもかかわらずログアウトできていない人間が大勢いたので、注意すること。
Xが起動している状態ではこのシステムはログアウトできないことをよく覚えておくこと。ログアウトするためには、まず、Xを終了しないといけない。Ktermなどのウィンドウでlogoutというコマンドを入れてもそれはKtermを抜けるだけであり、端末からログアウトはできない。
スタートメニューからFvwmを終了させ、コンソールに戻ったところでlogoutとすると、無事にログアウトが完了し再びlogin:プロンプトが表示されるはずである。その状態で初めてログアウトが完了している。
停止
ログアウトした状態ではシステム停止はできないので、haltコマンドにより停止させるためには再びログインを行わなくてはならない。面倒でも、今回だけはその手続きによりhaltさせること。通常の授業終了時にはX上のXtermやKtermじょうからhaltコマンドで終了させればよい。
目次ページへ戻る