Solaris ユーザーズガイド (上級編)

ディレクトリとディレクトリ階層

この節では、ファイルの管理や整理のために Solaris オペレーティング環境で使用するディレクトリ階層について説明します。

ディレクトリ階層

ファイルはディレクトリにまとめられますが、ディレクトリも階層構造になっています。この階層の最上位は「ルート」ディレクトリと呼ばれ、「/」で表されます。

次の図 3–1 の例では、ファイルシステム内のディレクトリごとに多数のサブディレクトリがあります。文字「/」は、ディレクトリのレベルを識別するために使用されます。/ (ルート) ディレクトリには、/usr/bin/export/home/lib というサブディレクトリなどがあります。さらに /export/home サブディレクトリには、user1user2user3 などのサブディレクトリがあります。

コマンドを実行するには、その対象となるファイルまたはディレクトリを含むディレクトリを指定する必要があります。指定されるディレクトリの下に存在するディレクトリとファイルの名前は、区切り文字であるスラッシュで結合されてパス名を形成します。たとえば、次の図の user3 ディレクトリのパス名は /export/home/user3 です。

図 3–1 ファイルシステム階層

前後のコンテキストで、この図について説明しています。

同一ディレクトリ内のすべてのサブディレクトリとファイルの名前は一意でなければなりませんが、ディレクトリが異なればこれらの名前が同じであってもかまいません。たとえば、/usr ディレクトリには /usr/lib というサブディレクトリがあります。/usr/lib/lib ではパス名が異なるため、これらの名前に重複はありません。

ファイルのパス名の機能は、ディレクトリのパス名とまったく同じです。ファイルのパス名は、ファイルシステム階層におけるそのファイルの位置を表します。たとえば、/export/home/user2 ディレクトリに report5 というファイルが存在する場合、このファイルのパス名は /export/home/user2/report5 となります。このパス名は、ファイル report5 はディレクトリ user2 の中にあり、user2 はディレクトリ home の中にあり、home はルート (/) ディレクトリの中にあることを示しています。

作業用ディレクトリの表示 (pwd)

pwd (print working directory) コマンドは、ファイルシステム階層内でのユーザの現在位置を表示します。


$ pwd

/home/user1

実際の出力は、ディレクトリ構造の違いのためにこの例とは異なることがあります。作業用ディレクトリが、ファイルシステム階層内でのユーザの現在位置となります。

ユーザのホームディレクトリ

各ユーザはホームディレクトリを持っています。端末またはウィンドウを始めて開いたときには、最初の位置がホームディレクトリになります。ホームディレクトリは、ユーザアカウントの作成時にシステム管理者によって作成されます。

作業用ディレクトリの変更 (cd)

cd (change directory) コマンドを使うと、ファイルシステム階層内を自由に移動できます。


$ cd /usr/lib

$ pwd

/usr/lib

cd コマンドを引数なしで入力すると、自分のホームディレクトリに戻ります。たとえば、ホームディレクトリが /export/home/user1 の場合は、次のようになります。


$ cd

$ pwd

/home/user1

ホームディレクトリは /export/home/user1 ですが、cd コマンドはユーザを /home/user1 に返します。これは、ホームディレクトリがオートマウンタによって /home ディレクトリにマウントされているためです。

Bourne Again、C、Korn、TC、および Z シェルでは、ホームディレクトリを示す短縮名としてチルド文字 (~) が使用されます。たとえば、次のように入力するとホームディレクトリ内の music サブディレクトリに移動できます。


example% cd ~/music

この短縮名を使ってほかのユーザのホームディレクトリを指定することもできます。次に例を示します。


example% cd ~username

username はほかのユーザのログイン名です。このコマンドによって、そのユーザのホームディレクトリに移動します。


注 –

Bourne シェルを使用している場合は、この短縮名「~」は機能しません。


Bourne シェルを使用している場合は、$home と入力してホームディレクトリを指定できるようにシステム管理者がすでに設定している場合があります。その場合は、次のコマンドを入力すると作業ディレクトリをホームディレクトリ内の music サブディレクトリに移動できます。


$ cd $home/music

サブディレクトリのすぐ「上」のディレクトリは、親ディレクトリと呼ばれます。前記の例では、/home/home/user1 の親ディレクトリです。親ディレクトリは、シンボル .. (ピリオドを 2 つ) で表します。したがって、cd .. というコマンドを入力すると、次の例で示すように、作業用ディレクトリが親ディレクトリに変わります。


$ pwd

/home/user1

$ cd ..

$ pwd

/home

現在の作業ディレクトリが /home/user1 のときに、/home/user2 にあるファイルの処理を行いたいという場合は、次のコマンドを入力します。


$ pwd

/home/user1

$ cd ../user2

$ pwd

/home/user2

../user2 は、user2 の親ディレクトリを経由するようシステムに指示します。この例に示すように、絶対パス名 /home/user2 を入力するより簡単です。

ディレクトリの作成 (mkdir)

新しいディレクトリを作成するには、mkdir コマンドのあとに新しいディレクトリの名前を指定します。


$ mkdir veggies

$ cd veggies

$ mkdir broccoli

$ cd broccoli

$ pwd

/home/user2/veggies/broccoli

相対パス名

ファイルやディレクトリの絶対パス名はスラッシュ (/) で始まり、そのファイルまたはディレクトリとルートディレクトリとの間のディレクトリ構造全体から見た関係を表します。ただし、現在の作業用ディレクトリに対するファイルやディレクトリの相対関係を表す省略名 (相対パス名) を使うこともできます。

親ディレクトリにいる場合は、絶対パス名ではなくディレクトリ名だけを指定すればサブディレクトリに移動できます。前記の例では、cd veggies というコマンドで veggies ディレクトリの相対パス名が使われています。現在の作業用ディレクトリが /home/user2 の場合、このディレクトリの絶対パス名は /home/user2/veggies となります。

別個のサブディレクトリをいくつか作成し、そのディレクトリ構造の中を移動してみてください。移動の際には絶対パス名と相対パス名の両方を使ってみてください。現在位置は pwd コマンドで確認します。

ディレクトリの移動とディレクトリ名の変更

ディレクトリを別の名前に置き換えることによって、ディレクトリ名を変更できます。ディレクトリ名の変更には mv コマンドを使います。


$ pwd

/home/user2/veggies

$ ls

broccoli

$ mv broccoli carrots

$ ls

carrots

mv コマンドを使って、ディレクトリをすでにある別のディレクトリ内に移動することもできます。


$ pwd

/home/user2/veggies

$ ls

carrots

$ mv carrots ../veggies2

$ ls ../veggies2

carrots

この例では、mv コマンドを使って、carrots ディレクトリを veggies から veggies2 に移動しています。

ディレクトリのコピー

ディレクトリとその下にあるファイルをコピーする場合は、cp -r コマンドを使います。


$ cp -r veggies veggies3

$

上記のコマンドは、veggies ディレクトリに含まれるすべてのファイルとサブディレクトリを新しいディレクトリ veggies3 にコピーします。これは「再帰的コピー」と呼ばれ、-r (recursive) オプションで指定します。このオプションを指定しないでディレクトリをコピーしようとすると、エラーメッセージが出されます。

ディレクトリの削除 (rmdir)

空のディレクトリを削除する場合は、rmdir コマンドを使います。


$ rmdir veggies3

$ 

ディレクトリにファイルやサブディレクトリが含まれている場合、rmdir コマンドではディレクトリは削除できません。

ディレクトリとそのすべての内容 (すべてのサブディレクトリおよびファイル) を削除する場合は、再帰的削除を指示する -r オプションを指定して rm コマンドを実行します。


$ rm -r veggies3

$

注意 – 注意 –

rmdir コマンドで削除したディレクトリは復元できません。rm -r コマンドで削除したディレクトリとその内容についても同様に復元できません。