コンピュータセミナー
2001.6.22
UNIX系のOSでは人間とOSとの間を取り持つ橋渡しをシェルが行っている。WindowsではExplorerがそれに近い役割をしているが、GUI元祖のMacintoshのFinderと呼ばれる環境がシェルをGUI化したものに近い感じである。ユーザの操作の補助を助ける仕組みがシェルにはたくさん用意されている。これから少しずつ学習していこう。
Linuxにおいてシェルの司る最も重要な役割はログイン、ログアウトの管理である。現在デフォルトのbashというシェルが起動している。教室の環境はログイン時にXウィンドウシステムが起動済みであるので、ログイン直後からマウスによる操作が可能であるが、その中でウィンドウとしてターミナルを起動したときに直接目に見えるのがbashである。ターミナルのウィンドウ内で
$ exit
とすると、そのシェルから抜けるので、ウィンドウが閉じてしまう。
教科書p.187
UNIX系のOSではユーザごとの使用環境を保存する設定ファイルがホームディレクトリに置かれる。通常はドットで始まるファイルなので、lsコマンドではオプションを付けないと表示されない。デフォルトの設定はターミナル上で
$ export | less
とすると見ることが出来る。実に多くの環境が設定されているが、それらの項目が 「環境変数」であり、変数に値を代入することにより設定を実行する。なお、デフォ ルト以外に自分んで設定する場合には、.bash_profile に設定を記述す る。UNIX系では設定ファイルのほとんどはテキストファイルなので自分の好みの設定にするためにはテキストベースで設定ファイルを編集する必要がある。
先ほどの export コマンドで変数の名前を参照することは出来るが、実際に個別に表示させる場合には変数の頭に$を付ける必要がある。なので、現在設定されている PATH を見るためには
$ echo $PATH
のようになる。なお、コマンドベースで操作を行うUNIXでは一般的にコマンドは /bin ディレクトリや /usr/bin ディレクトリなど置く場所がだいたい決まっている。そこで、絶対パスによるコマンド起動をより簡単にするためにあらかじめ決められたディレクトリにあるコマンドはディレクトリを指定しなくても起動できるようになっている。それが、PATHに含まれるディレクトリである。たとえば、端末のネットワーク環境の状態を見るコマンド netstat は /bin ディレクトリにあるので、
$ netstat -rn
のように使用できるが、ネットワーク設定そのものを見るコマンド ifconfig は管理者専用のディレクトリである /sbin にあるので、
$ ifconfig
としてもそのようなコマンドは無いというエラーが出る。その際には、
$ /sbin/ifconfig
とすると、設定を見ることが出来る。
教科書のp.189の一番上の四角い枠の下で
「$の左に|がついているのは、」の「|」はバックスラッシュの間違いである。また、同じページの
linux: export PS1='\h\w >'
の二行下にクエスチョンマークの逆立ちしたものがあるが、あれは>の間違いである。(\はバックスラッシュと同じ意味であることにも注意)
教科書p.190
今までに自分のホームディレクトリにあるファイルを編集する作業を何度か行った。その際に、ホームディレクトリにあるファイルを指定する場合には、
~/.xemacs.el
のような表記法を使用してきた。この、先頭の〜(ティルダ)がホームディレクトリを表す記号である。また、ホームディレクトリに移動する際にはオプション、引数とも無しで
$ cd
とするだけでよい。
*、?の記号はシェルにおいてはワイルドカードとして指定されている。それぞれ文字列と文字に代用できる記号であり、複数のファイルをコピーするときや、ファイル名を詳細に覚えていないファイルを操作する際など有効である。なお、それらのワイルドカードはファイル名の先頭に.がある場合、それらとはマッチしないので、注意が必要である。
教科書p.193
すでにRubyの方で使用しているリダイレクトは覚えておくと便利であるが、慣れないうちは間違いも多い。うっかり大事なファイルを上書きしてしまうと大変なことになるので注意が必要である。教科書には書いてないが、>>もリダイレクトとして使用することが出来、この場合はファイルの末尾に追加することを意味する。
パイプは表12.1の一番下にある|でコマンドをつなぐことである。 ls によるファイル名一覧表示、cat によるファイルの中身の表示などで、画面に収まりきらないときにページャである less に処理を引き継いで
$ ls -l | less
のようにすることを覚えておくと楽である。次章でその他のコマンドとの組み合わせなどを試す。
教科書p.193
図12.2とあるのは表の間違いであるが、その一番上の;でつなぐ方法は複数のコマンドを一度のコマンド操作で行えるので便利なことがある。2番目の方法は、X上でウィンドウを新たに開くアプリケーションの起動などで&だけを付ける方法はすでに試している。
教科書p.195
教科書ではコマンドの履歴をたどる方法としてCtrlキーとp、nの組み合わせが紹介されているが、これは↑↓で置き換えることも出来る。覚えると便利である。長いコマンドの際に一部を間違えてエラーが出たときなど、間違えた部分だけを訂正して再実行できる。また、TABによる補完も是非覚えておきたい操作である。
#!/bin/sh
for filename in `ls`
do
cp $filename $filename.bak
done
実際の動作としてはディレクトリにあるファイルすべてに拡張子 .bak をつけたものを複製として作成する。実用上はいろいろと問題もあるが、こ のようにしてバッチ処理を行うことができる。
また、以下のようなシェルスク リプトを作成しておくと、この授業開始時に必要な環境を一斉に整えることも可能 かもしれない。
#!/bin/sh
netscape http://www.ecs.shimane-u.ac.jp/~nawate/lecture.html &
kterm &
sylpheed &
gedit &
教科書の操作例を自分で試すことと、問題の答を考えること。ただし、問題番号は無茶苦茶になっているので、気にしないこと。問題は全部で4問ある。
授業の終わり頃に次回までに提出する課題を発表するのでアナウンスに注意すること。また、発表されたら課題を表示するためには、一度このページを再読み込みする必要があるのでNetscapeのボタンをクリックする。そうしないと、課題のページは表示されない。
第13章のコマンドについて実習する。