DOSからUNIXsへの乗り換え


DOSからFreeBSDやLinux等のUNIX系のOSに乗り換えた人が最初とまどうのは、 基本的なコマンドの名前が違うことではないでしょうか。その昔、CP/M-80 からCP/M-86に移る時、私も困りました。そしてCP/M-80とコマンド名が一緒 という、ただそれだけの理由でMS-DOSに移ったものです。

慣れてしまえば全くもってたあいない事なので、是非慣れてしまいましょう。 一般的にUNIXの方がコマンド名が短くタイプするのが楽です。さらにUNIX系 のOSで利用できるシェルにはalias機能を持つものがあります。DOSの時と 同じ名前で、UNIXのコマンドを利用できます。以下に csh系用の例を示し ます。ホーム ディレクトリの .cshrcファイルに書いておくとよいでしょう。

alias dir	ls -l
alias copy	cp
alias type	cat
alias del	rm
alias ren	mv
alias attrib	chmod
alias md	mkdir
alias rd	rmdir
もし愛用のシェルが ksh,bash系であれば、
alias dir='ls -l'
といった書き方になります。ただ注意されたいのは、UNIXのコマンドは基本 的に寡黙でエラーなどが生じない限りメッセージを出しません(便りの無い のは、良い便り方式)。'rm *'とやると有無も 言わせず(言わず?)実行します。tcshを使っているなら'set rmstar' と設定しておけば確認を求めて来るようになります。~/.cshrcに書いておく と良いでしょう。この場合、'if ($?prompt) then'以降に書くように。

ちなみに.cshrc等のdot fileの雛型が/usr/share/skel にあるので参考にしましょう。

あるいはGUIを使うという手もあります。xfm等を使えば、見た目は異なりま すが、MSエクスプローラのように操作できます。FDに慣れている人であれば、 FDcloneを使うというのも手でしょう。

ただ、やっぱりコマンドラインでの操作を知っておくことを勧めておきます。 というのもコンピュータを利用する最大のメリットである、大量のルーチン ワークを能率良く片付ける、という目的にはコマンドラインからの操作の方が 向いていると思うからです。パイプ、リダイレクト、正規表現といった シカケを使えば、極めて能率良く仕事をやっつけることができることでしょう。 GUI は、とっつきは良いかも知れませんが、コンピュータを利用する最大の目的 である能率向上にはあまり向いていないと思います。

DOSには無いがUNIXに有って、覚えておくと便利なものにジョブ コントロール があります。バークレイcshで導入された機能で、実行中のジョブにシグナル を送って(初期値ではCTRL+Z)中断し、また 再開したりすることが出来ます。

^Z
シグナルを送ってsuspendする
jobs
現在のジョブの状況を調べる
fg [%job#]
job番号で示されるジョブをフォアグラウンドで再開する。
bg [%job#]
job番号で示されるジョブをバックグラウンドで再開する。
また'kill %job#'といった使い方も可能です。更に'%'の後ろは、ジョブ番号の 代わりにジョブの名前(の途中)を使うこともできます。詳しくはお使いのシェル のマニュアルを見て下さい。

File Systemの違い

DOSやWindowsで使われているFile System(以下FS)はFAT(File Allocation Table) FS と呼ばれるもので、簡便な構造をしている反面、大規模(約1MByte以上)なdiskでは アクセス速度が極めて低下してしまう欠点を持っています。

一方UNIXで使われるFSには、

等いろいろあるが、いずれもファイルの実体と、その属性を記したi-node、 super blockから成り立っている。以下まとめてUFSと呼んでおく。

この文書ではそれぞれのFSの性能差等は論じない。ここでは一般ユーザーから 見て違いが気になる属性の話をしよう。 FAT FSにはfileの所有者やグループの概念が存在しない。そもそもDOSやWindowsが シングルユーザーシステムだからだ。(逆にネットワーク環境等、マルチユーザー で使われる場合はセキュリティ上の危険が常に付きまとう) 一方UFSの場合、fileには所有者, グループ, それ以外の 3段階の所有権の概念があり、それぞれに対してパーミッションを設定できます。 そのパーミッションもFAT FSでは、リード オンリーとか無意味なヒドゥン属性 しか設定できませんでしたが、UFSでは上記3段階のそれぞれに対し、

r
読(リード)
w
書(ライト)
x
実行(エグゼキュート)
の3つの属性をそれぞれ独立して設定できます。

-rwxr-x--- 1 me our 555 Mar 17 07:20 hoge

この例だとmeは読み,書き,実行全て出来て、ourグループは 読みと実行は出来るが書き込みは不可で、それ以外の他者は読み,書き,実行の いずれも不可という設定になる。設定の変更にはchmodコマンドを使う。 詳しくはmanを見てもらえば良いのだが、その時注意するのは属性の指定には 8進数が使われることだ。rwxの3bitを8(=2^3)進数で表現するのである。

またファイルがディレクトリ ファイルであった場合、リード,ライト属性は ディレクトリ エントリに対する許可属性を表し、実行属性はそのディレクトリ に移動できるかどうかを表します。

またパス名の区切りが、FAT FSでは通常\(バック スラッシュ)ですが UFSでは/(スラッシュ)です。どちらもツリー状の階層FSですが、 情報科学の世界では通常、ツリー構造は根を上に書くのが慣わしとなっております。

プロセス

UNIX系のOSは皆、マルチプロセス(タスク)と言って、複数のプロセスが同時に 走ります。ではそのプロセスとは何か、と言うと実行中のプログラムです。 実行属性が付いただけの単なるファイルに過ぎなかったプログラムが、メモリに 読み込まれCPUのプログラムカウンタやスタックポインタを割り当てられ走り出す とプロセスと呼ばれるものになります。このプロセスがファイルや他のプロセスに 作用することでシステムが動作していくわけです。

プロセスとはファイルと並ぶ、UNIXの2大重要概念です。逆にこの2つを理解すれば UNIXの9割を理解したようなものです。どうです、UNIXって非常に単純明解な システムでしょう。そのプロセスの状態を見るにはpsコマンドを使います。

% ps
  PID TT   STAT      TIME COMMAND
  137 p1  Ss      0:01.07 -tcsh (tcsh)
  183 p1  R+      0:00.08 ps 
ファイルの状態を見るlsコマンドと並ぶ重要コマンドです。覚えておきま しょう。

その他 Linux基礎知識 Freom DOS/Windows to Linux HOWTOも参考になるでしょう。
Powered by FreeBSD
For questions or comments, please send mail to: nkazushi@highway.or.jp