電子計測
2001.5.11
もちろん今のようなGUI環境が整う前にはコマンドによる操作が全てであったが、今でも当時と同様にコマンドは重要な操作方法である。理由はいろいろあるが、繰り返し処理を一つのコマンドで出来ることや、パイプやリダイレクトを利用して自分の好きなように処理を組み合わせられること、サーバなどの管理ではX自体の利用が出来ないこと、ネットワークを介した利用に適していること、などがある。
この授業でコマンドを練習するのは、単純に慣れると操作が早いからであり、ネットワーク時代を迎えてサーバ系の操作を担当することが予想される時代に適した処理方法だからである。基本的には教科書の通りに行えばよいが、いくつかは特に補足説明を行うことにする。cpやmvなど、また、lsやgrepなど使用頻度の高いコマンドについては以前のエレクトロニクスセミナーAでも行っており、使うに従って慣れていくはずなので省略する。困ったときは
$ man cp
などして、使い方を見ればよい。manはそのフォーマットや形式になれると実に有効なコマンドである。
自分以外の人間がファイルシステムにアクセスすることが可能な場合、自分のファイルを見られたくない場合にどうすればよいだろうか。それは他人が読む権利をファイルに与えないことにより実現できる。また、システム上重要な設定ファイルを勝手に書き換えられるとシステムが崩壊してしまうので、管理者以外にはファイルの内容を変更できないようにしないと行けない。そのように、誰かがファイルの内容を見たり、変更したりすることが出来るか、出来ないか、その権限を示すのが許可属性である。
属性を与えることが出来るのはファイルの所有者だけである。(厳密には何でも出来る管理者、superuser、が存在するが、それは今は考えない。)所有者は自分自身にもファイルの読みとり権限が無いように設定することも出来る。しかし、また、権限を変更することも出来るので結局は意味がない。
自分の環境で属性を確かめるにはファイル名表示コマンドであるlsにロング形式を示すオプションを加えて教科書p.31の例のようにすればできる。結果表示の左から二つ目のコラムから10番目までが属性を表す記号になっている。区分は、所有者 (user)、グループ (group)、その他 (others) と行われ、それぞれに読みとりr、書き込みw、実行xの権限があるかどうかが表示される。
属性を変更するコマンドがchmodであるが、初心者は教科書p.31からの8進数表記の方が初めはとりつきやすいと思われる。プロバイダなどのサーバにwwwページを開設する場合、通常public_htmlと言う名前のディレクトリにファイルを置く。そのディレクトリの属性が当然問題になるが、結構見過ごされるのが、自分のホームディレクトリ自身の実行権限なので、今後、自分のページを見ようとしてForbiddenなどのエラーが表示された場合にはその辺りも注意してみること。
教科書p.33
UNIX系の操作で初心者が一番とまどうのが階層ディレクトリである。Windowsでフォルダの操作になれている人間でもなぜかディレクトリの操作が苦手なケースがある。ディレクトリは意識しないでも良い場合もあるが、ファイルの保存や読み出し、コピーなどどの場所に置くのか、自分は何処にいるのか、ディレクトリの概念がきちんと分かっていないと苦労することが多い。
以下の言葉をきちんと覚えておくことが重要である。
特に、相対パスは覚えておくとちょっとした操作で効果的な概念である。自分が現在いる場所の親ディレクトリは..で表示され、上にどんどんたどるときには../../../../のようにして行くことができ、また、途中で別のディレクトリに入るような操作も可能である。あるディレクトリにあるファイルを全て移動するときには、gmcなどのGUI操作による移動よりも、ワイルドカード(教科書p.38)を利用して
$ mv * /hoge
などのようにコマンド一発で出来る方が楽である。
教科書p.36
シェルも初心者にはとりつきにくいものであるが、通常のコマンド操作を行っている環境がシェルだと思えば良い。シェルとは、厳密には人間の命令を機械語に変換してCPUに渡し、また、CPUの出力を人間に分かるように表示する環境のことで、コンピュータというハードウェアを包む殻のようなものであるのでシェルという名前が付いた。
Linuxでは通常bashと呼ばれるシェルがデフォルトで用意されている。bashは補完やヒストリ機能などが充実している高機能なシェルであるが、シェルスクリプトを書くときは慣例として/bin/shという古いシェルに対応させて書くことが多い。シェルの機能としてパイプ、リダイレクトという重要なものがあるので、それは自分で必ず実習しておくこと。例えば、ある程度端末を操作していくとホームディレクトリにファイルがたくさん溜まってくる。そのようなときに、
$ ls -al
のようにしたのではたくさんありすぎて目的のファイルを見つけにくいことがある。そういうときは
$ ls -al | grep May
などとして5月に作成されたファイルだけを選択的に表示することなどが出来る。Netscapeの調子がおかしいときに、
$ ps ax | grep netscape
とするとNetscapeのプロセス番号が分かるので、p.55にあるkillコマンドにより一度Netscapeを停止させることが出来る。
その他のシェルの機能でチェックした方がいいのはシェル変数であるが、その中のPS1という名前の変数はターミナルのコマンドプロンプトの内容を格納した変数である。教科書にあるように
$ set | less
とすると、変数名=値の組がずらずらと表示される。lessというページャを利用した場合にはスペースキーを押すたびに一ページ分ずつ表示され、Pを押すと初めに戻る。↑↓キーは一行ずつスクロールし、終わるときにはQを押す。今は
PS1=$ が入っているが、それを変更することによりカレントディレクトリを表示させることも出来る。ディレクトリの操作に慣れていない段階ではカレントディレクトリを表示させておくのも良いかもしれない。方法は、教科書のp.48にあるように
$ export PS1="\w: \$ "
などとすればよい。(ここで、環境によってバックスラッシュ\と円記号\が混同してしまうかも知れないが、同じものとして欲しい。)しかし、それではそのターミナルを終了してしまうと設定も終了して元に戻るので常にそのようにしたい場合には同じコマンドをエディタを利用して.bashrcと言うファイルに記述しておけばよい。
コマンド操作はキー入力が多く煩雑に感じることが多い。それを改善する手段としてシェルには便利な機能が用意されている。一つは教科書p.38にある「補完」と「ワイルドカード」である。それらについて、今一度良く理解できるまで自習すること。
また、「履歴」という便利な機能もある。コマンドラインで上向き矢印や下向き矢印をキー入力すると何が起こるか観察し、理解すること。これらの機能を有効に使うとキー入力の回数は大幅に減少できる。p.37にあるコマンド業編集機能との組み合わせまで組み合わせて使うことができればもう「プロ」である。
作業2
教科書p.80からのtelnetの説明を良く読み、リモートとローカルの操作に慣れること。例えば、自分の周りの電源が付いている端末のIPアドレス(172.16.1.**)を調べ、
$ telnet 172.16.1.**
としてログインし、その端末のXアプリケーション(geditやveditなど何でも良い)を自分の座っている端末の画面に表示させることをやってみる。方法は、教科書にあるようにxhostコマンドを使って、自分の端末の方に許可を与えて、リモート側で
$ export DISPLAY=172.16.1.??:0.0
のように??に自分のローカルのIPアドレスを入れて出力先の変更を行ってからXアプリケーションを起動してみる。
実はこれこそがUNIXの真骨頂なのであるが、慣れるまでは何をやっているのか分からないかもしれない。どんどん質問すること。
おまけの作業
Sylpheedにおける署名の作成方法が別のページにあるので興味があれば参考にすること。なお、Sylpheedはメニューバーの右隅にある「ヘルプ」により詳細なマニュアルが表示されるので必要に応じて利用するのがよい。
授業の終わり頃に宿題用の課題を用意するので、指示があったらこのページを再読込して課題を見ること。