Linux講座にようこそ。このページは「Linuxの使い方 - 第3章 ファイル操作のコマンド1」です。

Linuxの使い方

3. ファイル操作のコマンド1(1/2)

3.1 ファイル操作の基本

UNIX系OSのファイルシステム
【図3-1】UNIX系OSのファイルシステム
木構造のファイルシステムと呼んでいます

UNIX系OSのファイルシステムはディレクトリファイルから構成されています。ディレクトリにはそのディレクトリが管理しているディレクトリやファイルの管理情報が入っており、ファイルにはデータが入っています。

ファイルシステムを絵に描くと、図3-1のような形になります。この図では楕円形がディレクトリを、四角形がファイルを表していますが、木を逆さにしたような形ですので、木(ツリー)構造のファイルシステムと呼んでいます。

先頭のディレクトリをルートディレクトリ(指定するときは/記号)と呼んでおり木の根に相当します。ルートディレクトリ以外のディレクトリは幹や枝に、ファイルは葉に相当します。

ディレクトリで管理情報を持っている方を親、管理される方を子としますと、ルートディレクトリ以外のディレクトリは必ず親のディレクトリを持っています。子供のディレクトリをサブディレクトリと呼ぶこともあります。

ファイルを取り扱うには、通常、コマンド引数にファイルの名前を指定することになりますが、そこで問題になるのがファイル名の指定方法です。

UNIX系OSの場合、ディレクトリやファイルはパス名と言う形式で指定します。パス名とは木構造上でのディレクトリやファイルへの経路(道順)を指定したもので、次の2種類があります。

絶対パス名
木構造の先頭ディレクトリ(ルート)からの経路です。
相対パス名
予め設定してある起点となるディレクトリからの経路です。起点のディレクトリをカレントディレクトリと呼んでいます。

相対パス名の起点となるカレントディレクトリは、後程説明するcdコマンドで変更できます。

パス名はファイルシステム上の位置情報を含んでいることになりますので、名前が同じでもパス名が異なれば別ものとなります。従って、場所が異なれば同じ名前のファイルやディレクトリを複数作成できます。

以下に絶対パス名と相対パス名の例を示します。ここで注意して頂きたい点は、絶対パス名の先頭の/(斜線)はルートディレクトリを表し、2個目以降の/はディレクトリとディレクトリ或は、ディレクトリとファイルの区切り記号です。相対パス名の/は全て区切り記号です。また、カレントディレクトリや親ディレクトリを名前で指定することは出来ません。カレントディレクトリは.(ピリオド1個)、親ディレクトリは..(ピリオド2個)で指定します。

図3-1のdata1ファイルのパス名を示します。カレントディレクトリはmerryとします。

/home/merry/data1 ← 絶対パス名です。先頭の/はルートディレクトリを表し、それ以外の/は区切り記号です
data1 ← 相対パス名です
./data1← 相対パス名です。.はカレントディレクトリを表し、/は区切り記号です

図3-1のmeiboファイルのパス名を示します。カレントディレクトリはhomeとします。

/home/ken/meibo ← 絶対パス名です
ken/meibo ← 相対パス名です
./ken/meibo← 相対パス名です。.はカレントディレクトリを表します

図3-1のfstabファイルのパス名を示します。カレントディレクトリはhomeとします。

/etc/fstab ← 絶対パス名です
../etc/fstab ← 相対パス名です。..は親ディレクトリを表します

ディレクトリやファイルは権限さえあれば、ファイルシステム上のどこにでも作ることが出来ます。一方、UNIX系OSはマルチユーザーシステムですので、ファイルシステムを複数のユーザーが共有しています。各ユーザーがディレクトリやファイルを適当な場所に作成してしまいますと、後々のファイルシステムの管理が繁雑になってしまいます。そこで、各ユーザー毎に作成場所を決めており、その先頭のディレクトリをホームディレクトリと呼んでいます。

ホームディレクトリはシステム管理者がユーザー登録時に、通常、/home/の下にユーザー名と同じ名前で作成します。例えば、ユーザー名がmerryのホームディレクトリは/home/merry/になります。なお、システムにログインしたときは、ホームディレクトリがカレントディレクトリとして自動的に設定されています。

ホームディレクトリはパス名の外に、~(オーバーライン)や$HOMEで指定することも出来ます。

図3-1でmerryのホームディレクトリは/home/merry/とします。

~/data1 ← /home/merry/data1と同じです
~/mybin ← /home/merry/mybinと同じです

$HOME/data1 ← /home/merry/data1と同じです
$HOME/mybin ← /home/merry/mybinと同じです