UNIX は,ワークステーション (Workstation)で広く利用されているオペレーティングシステム (OS; Operating System) である.
UNIXは,マルチユーザー (Multi-user),マルチタスク (Multitasking)機能を搭載しており,ネットワーク機能や安定性,セキュリティに優れ,学術機関や企業の研究所などを中心に広く普及している.また,データベース (Database)などの大規模なアプリケーションソフト (Application software) が豊富であるため基幹業務用サーバとしても多く採用されている.
UNIXの特徴のひとつとして,洗練されたファイルシステムが挙げられる.ファイルシステムとは,ハードディスク (Hard disk) などの記憶装置に記録されているデータを管理する方式のことである.ファイルシステムは階層的であり,木構造,ツリー構造などという名前で表現される.今回は UNIX およびファイルシステムについて簡単に説明する.
卓上に,無造作に物を置くと必要な物を探しにくく,作業の効率が悪い. 本棚を棚毎に区別して利用したり,書類ケースを使って書類を種類別に整理したほうが使いやすい.
UNIX では,必要なファイルを目的別に整理できるようにファイルの入れ物が用意されている. それがディレクトリ(MacintoshやWindowsではフォルダ(folder) と呼ぶ)である. 現実の机の上を整理する時に,書類を書類ケースに入れるのと同様に,UNIX ではファイルをディレクトリに入れて整理する.
UNIX ではあらゆるものを「File」として扱う.
テキストファイルはもちろん.ディレクトリやハードディスク,プリンタ (Printer) や外部周辺機器すべてをファイル(特殊デバイスファイル)として取り扱う.すなわち,ディレクトリには単なるファイルのみならず,他のディレクトリを入れることもできる.その結果,UNIX のファイルシステムは図1に示すようなツリー(階層)構造として表現される.ここで見られるように,多くの場合ファイルシステムの図は根にあたるファイルを上に書く.
ここでいくつかの知識を整理しておこう.
ツリーの最上部にあるディレクトリを「ルートディレクトリ (Root directry)」と呼ぶ(通常,スラッシュ(/)で表される) .
UNIXファイルシステムでは全てのディスクを1つのディレクトリツリーの下に置いて管理する.
「/」というディレクトリ1つだけがルートディレクトリになる.
ルートディレクトリ以外のすべてのディレクトリは「サブディレクトリ」と呼ばれる.
ディレクトリは,複数のファイルを中にもつ「ファイル」である.
/bin:UNIXの標準的なプログラム
/dev:デバイスファイル
/etc:システム設定やユーザープロファイル
/tmp:作業ファイルの一時保存場所
/home :ユーザー領域
図1: ファイルシステムの構造例
(GitPodでは個人のホームディレクトリの絶対パスは
/home/gitpod
となります.)
通常ホームディレクトリ以外のディレクトリは勝手に変更できない.(これはつまり,自分のファイルが他人から保護されているということを意味する.)
ホームディレクトリは特殊は文字「~(チルダ)」で表すことができる. 例えば,ユーザのホームディレクトリにあるファイル「test.txt」は以下のように指定できる.
~/test.txt
カレントディレクトリは
pwd
コマンドで表示される.
ファイルシステムの中のすべてのファイルは「パス名」を用いて指定することができる. パス名はいわばファイルの住所のようなものである. パス名には記述の方法によって「絶対パス名」と「相対パス名」の2種類がある.
絶対パス名は,ルートディレクトリからそのファイルに至るまでの経路をすべて書く方法である.
このとき,
ルートディレクトリは「/」で表す.
ディレクトリとディレクトリ,またはディレクトリとファイルの区切りは「/」で区切る.
例えば,図1の左下の sample.txt を絶対パス名で指定するには以下のように記述する.
/usr2/stu/t980000/documents/sample.txt
すべてのファイルは以下の記述方法によりカレントディレクトリから「相対的」に指定することができる.
カレントディレクトリの一つ上(親)のディレクトリは「..」で表す.
カレントディレクトリそのものは「.」で表す.
例えば,図1でカレントディレクトリが「usr」で「sample.txt」を指定するには,以下のような相対パス名を用いることができる.
../usr2/stu/t980000/documents/sample.txt
ここで「..」はディレクトリ「usr」の親ディレクトリ「/」を表す.
相対パスによる表記は唯一ではないため,この他のパス名でも表記できる.
では,なぜホームディレクトリの中でしか作業ができないのだろうか?それは,UNIX のすべてのファイルには「持ち主」と「パーミッション」があり,誰が読み書きできるのかが決まっているからである.通常ホームディレクトリより上のディレクトリには特殊なユーザしか変更ができないようにパーミッションが設定してある.ユーザのホームディレクトリは,各ユーザが持ち主であり持ち主しか読み書きできないようにパーミッションの設定がされている.
パーミッションの確認は UNIX コマンドの 「ls -l」を用いることで行う.図2にその結果を示す.
図2:パーミッションの表示例
ls コマンドの結果は図3に示すような意味を持つ.ここで特に重要なのは,「パーミッション」と「ファイルの持ち主」の部分である.
図3: ls コマンドの出力の意味
パーミッションの部分は先頭の1文字は「d」ならばディレクトリ,「-」ならばファイルを表す.残りの9文字は,3文字ずつ組となって,それぞれ「持ち主」「グループ」「その他のユーザ」のパーミッションを表す.この様子を図4に示す.
それぞれの文字は以下のような意味を持つ.