unix は「複数の人間が同時に同じシステムを使う」ために設計された OS であり,
こうしたシステムをマルチユーザシステムとよぶ.
こうしたシステムでは,ユーザを識別したり,ユーザの行動や資源を個別に制限するための仕組みがある.
また,「人間ではないユーザ」を用いて適切な作業をさせる等,この仕組みは様々な使い方がされている.
unix では,
ユーザは事前に登録され,
ログインによってアクセスを開始し,
アクセス中は適切なコマンドによって作業を行ない,
ログアウトでアクセスを終了する,という使い方が基本である.
こういった内容に関して,まずは最も最初から必要となるアカウントやパスワードと
いったものやログイン,ログアウト操作について知る.
ログイン周りはセキュリティ問題に強く関係するため,
システムによって拡張されたり制限が加わっていたりすることが多い.
それは阪大教育用計算機システムでも同様であり,
一般論がそのまま適用できない場面が多くなっている.
しかし,まずは基礎から,ということでここではなるべく古典的かつ一般的なものを解説する.
なお,セキュリティに関しては遠隔ログイン等を紹介する際に詳しく説明する.
コマンド等 | 機能等解説 (一般の場合) | 阪大教育用計算機システムでは |
---|---|---|
(略) |
ログインのための手続き. システムやプロトコルによってかなり異なるが,通常はコンソール前に座れば一目瞭然なことが多いだろう. |
「利用の手引き」の「ログイン操作」を参照のこと. |
logout , exit 等
|
ログアウトする. これもシステムによってかなり異なる. |
(X を使っている場合) このコマンドは用いないこと. 「利用の手引き」の「ログアウト操作」を参照. 確実にログアウトできるように,この手続きだけは忘れないようにすること. |
passwd ,
yppasswd 等
|
パスワードを変更する. | これのコマンドではパスワードは変更できない. 「利用の手引き」の「パスワード変更」を参照. |
id
|
ユーザの、ユーザ名とグループ名および各番号を表示する. | 利用できる. |
last
|
最近ログインしたユーザのリストを表示する. | 利用できる. |
uptime
|
システムの稼働時間,ユーザ数,平均負荷を表示する. | 利用できる. |
who, w, finger, whoami 等
|
who: 誰がログインしているかを表示する w: ログインしているユーザとその作業内容を表示する. CPU の情報もわかる. finger: ユーザ情報を調べる whoami: ... who am I: 私は誰? |
finger を除いてだいたい利用できる. |
date, cal 等
|
date: 日時を表示 cal: カレンダーを表示する. |
利用できる. |
leave
|
何時離席すべきかを知らせる leave 1400 : 午後2時になったら帰らないと,という時に指定する. こうすると,午後 1:55 と 1:59, 2:00, 2:01, (1分おきでずっと) に御知らせが届く. leave +0015 : 15分後に帰らないとという時. |
利用できない. |
さて,unix の cui 上で操作を行うということはどういうことか解説しておこう.
その仕組みについては後述するが,cui での操作はコンピュータに対して
「コマンド」を用いて命令することで行われる.
このコマンドには,大ざっぱな文法構造があるので,それを事前に理解しておくとこれからの学習に大いに助けになろう.
以下,そのコマンドの文法等について説明する.
実習
操作しても支障のなさそうな範囲で, 先に出てきたコマンドを試してみて,
コマンド操作の雰囲気をつかんでみる.
具体的には,次の手順で行う.
なお,この手順はこの授業での実習の基本なので,kterm (漢字端末エミュレータ) などの扱いには慣れておくべし.
ちなみに…
kterm をはじめとする端末エミュレータとは,文字端末と呼ばれる文字しか扱わない端末の
「エミュレータ=動作模倣ソフトウェア」の一種である (kterm = Kanji TERMinal emulator).
cui 環境を体感するには端末エミュレータは最も手軽な手段であるので,これからも良く用いる.
同様の文字端末エミュレータには,xterm, rvxt, gnome端末など数多くがあるので,自分の好みのものを使うとよいだろう.
なお,より「本格的な」cui 環境については第3回の授業で解説する.
unix というシステムの持つ文化には,「何事も自分で調べよ」という大人な部分がある.
そのため,コマンドには基本的にオンラインのマニュアルが用意されており,
そのマニュアルを参照することで使いこなせるようになることが期待される.
また,unix のコマンドは長い歴史の中で大勢の開発者が少しづつ追加,改良してきたものなので
その名前から使い方,オプション等はかなり違う (要するにバラバラ).
そうした意味でも,各コマンドの目的,動作の詳細,
オプションや各種設定の仕方等をオンラインマニュアルから読んでから
ユーザはコマンドを使うという「流れ」が unix cui 操作の大前提となっている.
オンラインマニュアルで見られるものは,
という感じになっている.
わからなかったらまずマニュアル,という癖をつけておくのが上達への第一歩である.
(第二歩目は,「unix に詳しくて教えてくれる知人を見つける」である(^-^)).
コマンド等 | 機能等解説 |
---|---|
man コマンド名 |
オンラインマニュアル.
与えたコマンドについてのマニュアルを表示する. 何も設定しないと,たいていは英語マニュアルだ. |
jman コマンド名 |
日本語オンラインマニュアル.
与えたコマンドについてのマニュアルを日本語で表示する. マニュアルの日本語訳が存在しなければ英語のものを表示する. 設定によっては使えない. |
(j)man man |
オンラインマニュアルのマニュアル(^-^).
man もコマンドなので,これはアリなのだ. マニュアルの使い方についてよく分からない場合はこれを見よ. |
(j)man -k キーワード |
マニュアルデータベースの中からキーワードを含むようなもののコマンドを探し出して列挙する.
良く分からないがこんな感じ,というコマンドを探したりするのに使う. |
xman |
Xwindow 上のオンラインマニュアル.
存在するマニュアルリストが一覧で見られるなど,結構便利だが, 英語表示のみなことが多い. |
info |
オンラインマニュアル.
man 系統で見られるマニュアルは主に「システム管理者によって用意された」 ものであるが, info でみられるマニュアルはユーザが主に用意するものである, という違いがユーザからみたときに一番わかりやすい違いか. 操作方法が一種独特. 一種のハイパーテキストなので,うまく作られていれば非常に強力なマニュアルとなる… が,そうした用途には web document が主として使われるようになってしまった. |
ちなみに…
(j)man
などのコマンドでオンラインマニュアルを画面に出力したはいいが,
その後どうやって操作したらよいかがわからないかもしれない.
実は,こうした画面出力では通常は
less
というコマンドが用いられているので,
このコマンドの操作方法を調べておけばよい.
具体的には,
(j)man less
などとせよ.
実習
オンラインマニュアルコマンドを試してみる.
先に出てきた, ログイン関連のコマンドを対象としてマニュアルを調べてみるとよいだろう.
unix で cui 操作をしようとすると,実はそこには「シェル」というソフトウェアが既に起動していて,人間の命令 (コマンド) を待ち構えている.
具体的には,kterm を起動したとき,
>
や
$
などという表示がでるが,
あれはシェルが「何か入力してください」とコマンド入力を待ち受けていることを示している.
基本的に,この「シェル」
プログラムを通して人間の文字入力を命令としてコンピュータに伝えるのが
unix での cui 操作である.
つまり,unix os と人間の間に,シェルが入って両方の橋渡しをしてくれるのである.
イメージとしては,シェルは「同時通訳者」もしくは人間の「執事,召使い」
と思えばよい.
実際,シェルは細かいことを人間の代わりに覚えておいてくれたり,
探し物をしてくれたり,間違ったコマンドを直してくれたり,とまさによくできた召使いといってよい.
結局,unix での cui 操作に慣れるというのは,
召使いであるシェルへの命令の仕方に慣れる
ということであるともいえる.
ちなみに,シェルにはいろいろな種類があり,好みに応じて好きなものをを選ぶことができる.
これ以上の詳しい解説はシェルスクリプトを学習するときに行なう.
さて,こうした「二段階を経ての命令」には便利さとは逆に問題も存在する.
それは,unix cui での操作には,
という二つのファクターが入ってくるので,
この二つのファクターに関する知識が要求されること,
問題が起きたとき (特に初心者は) 混乱しやすいという点である.
これは,意識して区別するようにしていけばすぐ分かるようになる.
よく分からないときは,自分が困っている原因がどこにあるのかをまずはっきりさせるようにすると解決が早いだろう.
exit
コマンドを使う.
シェルスクリプトに関しては後日の講義で解説するので,
ここではシェルの対話的利用に関する説明を行なう.
また,パスに関しては利用環境のカスタマイズ等の講義で教える.
機能に関しては,各種シェルにより使えたり使えなかったりするうえ,
コマンドも異なるため,詳細は調べてから利用するように.
> ls -Fa ← man で調べておくこと. ./ .a 00.c a.txt b z.txt ../ .b a abc dummy.html > echo ??? ← man で調べておくこと. abc > echo [a-c]* a a.txt abc b > echo {a,z}.txt a.txt z.txt > echo *.* ← 途中にピリオドのあるもの. ファイル名先頭の . には対応しない. 00.c a.txt dummy.html z.txt > echo * ← 全て… と言いたいがファイル名先頭の . には対応しない. 00.c a a.txt abc b dummy.html z.txt > echo .* * ← 全て… と言いたいがディレクトリの . .. にも反応してしまう. . .. .a .b 00.c a a.txt abc b dummy.html z.txt
これ以降,詳細は man コマンドで調べるのが前提である. 忘れないように.
コマンド等 | 機能等解説 |
---|---|
chsh, ypchsh 等 |
ログインシェルの変更.
標準シェル (/etc/shells) に載っているシェルの好きなものにログインシェルを変更できる. 阪大教育用計算機システムでは ypchsh が使える. |
alias 別名 コマンド |
コマンドに別名を与える.
このコマンドを実行以降,指定したコマンドを別名で呼び出すことができる. |
unalias 別名 | 別名を解除する. |
history |
これまでに実行したコマンドの履歴リストの表示.
リストの長さには制限があるので,正確には 「直前までのコマンド履歴の一部」であるが… |
!! |
直前のコマンド行の再実行.
時に便利だ. |
!n (nは数字) |
コマンド履歴リストの n番のコマンド行.
これもなかなか便利. |
!-n (nは数字) |
現在より n行前のコマンド行.
同じく便利. |
!文字列 |
コマンド履歴リスト中,指定文字列が先頭にあるコマンド行で最も最近のもの.
とても便利だ. 是非とも使いこなそう. |
!?文字列? |
コマンド履歴リスト中,指定文字列が含まれるコマンド行で最も最近のもの
便利なのだが,(人間が) 勘違いして違う行を呼び出してしまうことがあるので,使うときは注意をするべし. |
↑,↓, ^n, ^p など |
コマンド履歴リストを直接コマンドラインに表示して利用.
無意識に使っている人も多い. |
実習
上に出てきたシェルの機能,コマンド等を一つ一つ確かめてみよ.
良く分からない概念などがたぶんあるだろうから,そうした際は教官や TA に遠慮無く聞くこと.
以下の課題について,あたうかぎり賢明な調査と考察を行い,
AppliedMath-Report-01
という題名をつけて e-mail にて教官宛にレポートとして提出せよ.
なお,提出先のメールアドレスは
担当教官,TA
および口頭で伝達される.
なお,レポートを e-mail の代わりに TeX で作成した書面にて提出してもよい.
(j)man -a
の意味を調べよ.
cal
を用いて,10年後の自分の誕生日が何曜日か調べよ.
ls
のオプションを調べ,自分で最もよい設定を探し,
どう良いのか等を記述せよ.
また,alias を用いて ls
と打つだけでそのオプションが働くようにしてみよ.