Operatring Systemはユーザのコンピュータ操作を助ける存在です。
Operatring SystemはOSと略されて呼ばれる事が多いでしょう。
PCで使用されているポピュラーなOSはUNIX互換OSとWindowsです。
UNIXは登録商標です。UNIXと名乗るには難しい定義があります。操作が同じでもUNIXと名乗れないOSもあります。そこでUNIX及びその互換OSをUNIX互換OSと呼ぶことにします。
Windowsの前身はMS-DOSです。Microsoft Disk Operation Systemの略称です。MS-DOSはUnixを手本に作られました。そこでMS-DOSの操作はUNIXと共通する部分が多いのです。
UNIX互換OSでも、Microsoft OSでも周辺機器・入力装置・出力装置をデバイスと呼びます。
主なデバイスの種類に、
コンソール
プリンタ
ドライブ
その他の周辺装置
どこにも出力しない」という宛先 ブラックホール
があります。
コンソールはCON
プリンタはLPT または PRN
ドライブはドライブレターとしてアルファベットとコロン
その他の周辺装置はAUX
「どこにも出力しない」という宛先はNUL
として表示します。
コンソールの入力装置はキーボード コンソールの出力装置はディスプレイです。
UNIX互換OSとMicrosoft OSでは、ファイルやディレクトリだけでなく、デバイスもファイルとして扱います。この機能によって管理操作手順の統一が図られています。
この図はデバイスの相関関係を表しています。
キーボードはに有力装置、ディスプレイは出力装置ですが、両方あわせてコンソールというデバイスを構成しています。そこでコンソールとしては入出力可能なデバイスとなります。
COMポートなどのAUXや、ドライブも入出力可能なデバイスです。ファイルのコピーはドライブ間やドライブ内部のディレクトリ間での入出力といえます。
プリンタは出力専用デバイスです。しかし、IBM PC-AT互換機のプリンタポートは入出力可能なのでOSによっては入出力可能なデバイスになります。
ファイルのコピーやディスプレイ出力・キーボード入力・印刷は全てデバイス間通信であるといえます。
シェルは、OSが用意しているユーザ操作環境です。
カーネルと呼ばれるOSの核の部分に、ユーザが直接触れないようにしています。
シェルにはCUIのシェルとGUIのシェルと存在します。
CUI キャラクター・ユーザー・インターフェースは、主に「キーボード」から「コマンド」という英数半角文字列の「呪文」を入力操作する環境です。
画面表示は黒地に白抜き文字のみです。
コマンドラインインターフェイス・・・CLIという人もいます。
GUI グラフィカル・ユーザー・インターフェースは、主に「マウス」で「ボタン」や「アイコン」を操作をする環境です。
画面表示はカラフルなものが多いです。
MS-DOSのCUI型シェルはcommand.comで提供する「コマンドプロンプト」です。
※ 16bitのOSであるMS-DOSでは、config.sys内にshell=command.com の記述があります。
WindowsのCUI環境では16bitのcommand.comまたは32bitのcmd.exeで提供する「コマンドプロンプト(MSDOSプロンプト)」です。
コマンドプロンプトを管理・制御するプログラムファイルcommand.comとcmd.exeをコマンドプロセッサといいます。
UNIX互換OSでは、csh・tcsh・sh・ksh・bash・zsh・rc、などがあり、ユーザの好みでセットできる様になっています。
コマンドとは、CUI型シェル内でOSの操作に使用する英数半角文字列の「呪文(命令)」群のことです。コマンドもプログラムの一種となります。
UNIX互換OS内では引数の記述に多少の相違はあるものの、同じ機能を実現するコマンドそのものの文字列はほとんど同一です。
UNIX互換OSとMicrosoft OSでは、同じ機能を実現するコマンドの文字列が異なる事が多いです。
外部コマンドはコマンドと同名のプログラムファイルとして存在します。
Microsoft OSの場合、内部コマンドは全てcommand.comまたはcmd.exeファイルに格納されています。
command.comまたはcmd.exeから内部コマンドを実行します。
command.comは16bitの環境で、MS-DOSやWindows95 /98 /Me /NT /2000 /2003 /XPに実装してあります。
cmd.exeは32bitの環境でWindows NT /2000 /2003 /XPに実装してあります。
NT /2000 /2003 /XPでは、以前のVersionのWindowsとの互換性のためにcommand.comを用意しています。通常はcmd.exeを使用しましょう。
UNIX互換OSの場合、コマンドは全てファイルとして存在するので(Microsoft的概念では)すべて外部コマンドとなるが、一般的にはそのようには呼びません。
MicrosoftのOperating System では拡張子によってファイル種類を区別しています。
実行可能ファイルとはプログラムファイルのことです。wordやExcelなどのアプリケーションもプログラムです。
実行可能ファイルの拡張子には、
バイナリ形式ファイルの.com
バイナリ形式ファイルの.exe
テキスト形式ファイルの.bat
OS/2およびNT /2000 /2003 /XPのみで使用可能なテキスト形式ファイルの.cmdがあります。
Microsoft OSの主なコマンドには、
内部コマンドのDIR 内部コマンドのCD
内部コマンドのMD 内部コマンドのRD
内部コマンドのCOPY 外部コマンドのDISKCOPY
外部コマンドのXCOPY 内部コマンドのRENAME
内部コマンドのLABEL 内部コマンドのFORMAT
内部コマンドのTYPEなどがあります。
DIRは任意のディレクトリ内容を表示します
CDはカレントディレクトリの移動・変更です
MDはディレクトリ作成、RDはディレクトリの削除です
COPYはファイルのコピーです
RENAMEはファイル名変更、LABELはディスク名変更です。
TYPEはテキストファイルのないよう表示です。
他にどのようなコマンドがあるのか知りたいときには、コマンドプロンプトから"HELP"と入力しましょう。
UNIX互換OSの主なコマンドには
任意のディレクトリ内容を表示するls
カレントディレクトリを変更するcd
ディレクトリを作成するmkdir
ディレクトリやファイルを削除するrm
ファイルやディレクトリをコピーするcp
ディレクトリやファイルを移動するmv
ディスク装置をディレクトリとしてマウントするmount
マウントを解除するumount
テキストファイルの内容を表示するcat
等があります。
プログラムを実行する場合、ルートの位置からプログラムが存在する場所までの絶対パスか、もしくはいま自分がいるカレントディレクトリからプログラムが存在する場所までの相対パスとプログラムファイル名を指定する必要があります。
頻繁に利用するプログラムの存在位置を環境変数に登録すると、プログラムファイル名のみの指定でプログラム実行を可能です。
Microsoft OSでは、カレントディレクトリにプログラムが存在する場合には、環境変数へのパス登録や実行時パス指定を行わずにプログラムファイル名のみでプログラム実行が可能です。
UNIX互換OSでは、カレントディレクトリにプログラムが存在する場合には、カレントディレクトリへのパスを表す./を付加します。プログラムファイル名のみでは実行できません。
Microsoft OSもUNIX互換OSも、ディレクトリにファイルを格納して管理します。
Windows95以降はディレクトリをフォルダと呼んでいます。
それでもファイル一覧を表示するdirコマンドでは<DIR>と表示します。
Microsoft OSはドライブ毎にルートディレクトリが存在します。
MS-DOSの一部のバージョンやWindows Server 2003では、任意のドライブを他ドライブのディレクトリの如くマウントする事ができます。
UNIX互換OSでは物理ドライブが複数存在していても、ルートディレクトリは一つのみです。
物理ドライブはディレクトリの如くマウントして利用します。この操作にはmountコマンドを利用します。
ディレクトリの中に更にディレクトリを用意できます
ディレクトリの中のディレクトリをサブディレクトリと呼びます
treeコマンドで、ディレクトリのツリー構造を確認可能です
Microsoft OSにもtreeコマンドは用意してあります。エクスプローラでもツリー構造は確認できます。
ls -laの実行結果で、属性にdが有るのがディレクトリです。UNIX互換OSではディレクトリはファイルとして扱われます。
Microsoft OSのdirコマンドでも同様の事が確認できます。ディレクトリはファイルとして扱われています。
mountコマンドでフロッピーディスクをマウントしてみました。
マウント以前のディレクトリ内用表示と、マウント以後のディレクトリ内容表示に差が有ります。フロッピーディスクの内容が表示されているからです。
しかし、フロッピーディスク内容の表示は、フロッピーディスク固有の表示というものが無く通常のディレクトリ表示と差が有りません。このことから、ディスクはディレクトリとして扱われる、という事が判ります。
ディレクトリはファイルとして扱われるので、ディスクはファイルとして扱われます。
サブディレクトリと親ディレクトリの表示はMicrosoft OSもUNIX互換OSも同じです。
サブディレクトリはドット一つで、親ディレクトリはドット二つで表します。
パスとは、ターゲットの居場所への道のり(経路)を表します。
相対表記は、自分の居場所からターゲットまでを表します。
別のディレクトリをターゲットとする場合、共通の祖先まで逆のぼり、ターゲットまで下がる事となります。
絶対表記は、自分がどこにいるかにかかわらず、ルートからターゲットまでを表します。
「ルート」と「区切り」を表す使う記号は、
Windowsを含む日本語版Microsoft OSでは円記号です。
Windowsを含む英語版Microsoft OSではバックスラッシュです。
UNIX互換OSではスラッシュです
HTMLもスラッシュです
Microsoft OSでパスの表現を考えてみましょう。
カレントディレクトリをJPNで、ターゲットをbackupとする相対表記は、
..\..\..\..\..\backup
となります。
カレントディレクトリをJPNで、ターゲットをbackupとする絶対表記は、
E:\backup
となります。
UNIX互換OSでパスの表現を考えてみましょう。
カレントディレクトリを/home/user_01 ターゲットを/rootとする相対表記は、
../../root/
となります。
カレントディレクトリを/home/user_01 ターゲットを/rootとする絶対表記は、
/root/
となります。
標準入力・標準出力とは、デバイス間通信の事です
MicrosoftのOperating SystemやUNIX互換OSでは、デバイスをあたかも「ファイル(file)」のごとく取り扱います。
ファイルを転送するcopyコマンドやdir・typeなど表示出力をするコマンドとパイプ“|”やリダイレクト“>”を利用し、任意のデバイスからのデータ入力を任意のデバイスに対して出力します。
例1)は標準入力としてEドライブのルートディレクトリの内容を取得して、デバイスCONに標準出力する記述です。
例2)は例1)と同じ結果をもたらします。dirコマンドの標準出力デバイスがデフォルトでCONだから、例1)は例2)のリダイレクト先指定を省略できます。
例3)は標準入力としてEドライブのルートディレクトリの内容を取得して、ファイルデバイスfile1.txt に標準出力する記述です
例4)はファイルデバイスfile1.txtの内容を標準入力として、デバイスCONに標準出力します。
例5)は例4)と同じです。ファイルデバイスfile1.txtの内容を標準入力として、デバイスCONに標準出力します。
例6)は1画面では表示しきれない標準出力をパイプを通してmoreコマンドの標準入力にしています。これで1画面ずつ標準出力できます。
シェルスクリプトとは、一連のコマンド操作をテキストファイルに記述し、プログラムとして扱う手段です。
Microsoft OSの場合、拡張子が.batもしくは.cmdのテキストファイルとなります。バッチファイルと呼ばれる事もあります。汎用機のバッチ処理と混同しないようにしましょう。
UNIX互換OSの場合はchmodコマンドで実行属性にします。拡張子とは関係有りません。拡張子が無くても実行属性で実行可能です。
シェルスクリプトもプログラムの一種です。実行にはパスの指定が必要です。
Microsoft OSでは、カレントディレクトリにスクリプトファイルが存在する場合にはファイル名の指定のみで実行可能です。
UNIX互換OSでは、カレントディレクトリにスクリプトファイルが存在する場合にはカレントディレクトリへのパスを表す./を付加する必要があります。
シェルスクリプトの一例です。
このスクリプトを実行した日時のディレクトリを作成するスクリプトです。これはWindows用ですが、環境変数の切り出しをUNIXフォーマットに対応させれば同じ論理構成でUNIX互換OSでも実現可能です。
応用として、このスクリプトをタスクスケジューラなどで毎日定時に自動実行させ、日毎のログやファイルを保管するルーチンの自動化が実現できます。
このスクリプトを実行した日時をファイル名として、E:\DATAディレクトリの内容一覧を記録するスクリプトです。これもWindows用ですが、環境変数の切り出しをUNIXフォーマットに対応させれば同じ論理構成でUNIX互換OSでも実現可能です。
これも応用として、このスクリプトをタスクスケジューラなどで毎日定時に自動実行させると、日毎のE:\DATAディレクトリの内容一覧を保管するルーチンの自動化が実現できます。