今回のテーマは「ディレクトリ」です。まず、Linuxのディレクトリ構造を確認し、後半で「相対パス」と「絶対パス」を取り上げます。コマンドラインでファイルを操作するときだけではなく、環境設定にも不可欠です。
これまでにも本連載で何度か登場してきた「ディレクトリ」という言葉を、ここであらためておさらいしましょう。
コンピュータではさまざまなデータを扱いますが、これらは基本的に全て「ファイル」としてHDDなどの記憶媒体に保存されています。そして、これらのファイルがどこにあるかを整理したものが「ディレクトリ(directory)」になります。
ディレクトリは階層化されています。つまり、ディレクトリの中にディレクトリがあり、そのディレクトリの中にまたディレクトリがある……というような管理が可能になっています。このディレクトリの中にあるディレクトリを「サブディレクトリ」と呼びます。また、サブディレクトリ側から見た場合、自分自身の1つ上の階層のディレクトリを「親ディレクトリ」と呼びます。
ディレクトリは「/」記号で表します。例えば、「home」ディレクトリの下に「study」ディレクトリがあり、そこに「file.txt」というファイルがあった場合は、「home/study/file.txt」のように表すことができます。
なお、Windows環境では、ディレクトリを“フォルダ”として視覚化していますが、コマンドプロンプトではLinuxと同じように「cdコマンド(change directory)」や「mdコマンド(make directory、Linux環境のmkdirコマンド相当)」で操作します。Windows環境ではディレクトリの区切りを「\」記号で表すので、「Users」ディレクトリの中の「study」ディレクトリの中の「file.txt」ならば「Users\study\file.txt」となります。
1つのディレクトリにサブディレクトリは複数作成することができますが、親ディレクトリは1つしかありません。このような構造を「ツリー構造」と呼びます。1本の木の根元から複数に枝分かれしていくイメージです。
一番の“根っこ”となるディレクトリを「ルートディレクトリ」と呼びます。木のイメージだと上下が逆になってしまいますが、ここが最上位のディレクトリで「/」記号1文字で表します。
例えば、ファイルやディレクトリのリストは「ls」コマンドで表示できますが、ルートディレクトリの内容を表示したいのであれば「ls /」のように指定します。GUI環境で実行している場合、lsコマンドはカラーで表示されていることが多く、ディレクトリかどうかは色で判断できるようになっています(画面1)。
ちなみに、「/」はGUI画面では「コンピューター」で表示されるかもしれません。CentOSの“場所”(nautilus)の場合、画面で「コンピューター」を選択するか、コマンドラインで「nautilus /」と入力して実行すると、ルートディレクトリが表示されます(画面2)。
lsコマンドでファイルやディレクトリについてもう少し詳しく知りたい場合は、「-l」オプションを付けて「ls -l /」のように実行します(画面3)。「ls -l」ではファイル名の前にファイルの属性や所有者などの情報が表示されますが、ディレクトリは先頭文字が「d」で示されます。
Linuxのディレクトリ構成はディストリビューションやバージョンによって異なりますが、おおむね似たような名前、似たような用途になっています(※)。
※コマンドラインでマニュアルを参照する「man」コマンドでは、「man hier」で概要を知ることができます。ディレクトリの“標準”に興味がある方はFHS(Filesystem Hierarchy Standard)を検索して見ましょう。
[参考]これだけは知っておきたい! Linux必須コマンド20(後編)
伝統的には、ルートディレクトリの下に「bin(/bin)」「lib」「etc」「usr」ディレクトリがあり、「/usr」ディレクトリの下に「bin(/usr/bin)」「lib」「etc」「local」ディレクトリがあり、「/usr/local」ディレクトリの下に「bin」「lib」「etc」ディレクトリがある、という構造になっています(図1)。
この構造は主にHDDの容量やパーティションサイズの制限によるもので、「ルート(/)」にはシステムを起動するのに最低限必要なファイル、「/usr」下には起動後に使用するファイル、「/usr/local」下には用途が限られるファイルや一般ユーザーが比較的自由に使ってよいファイル、のように使い分けられていました。
「bin」や「lib」など、同じ名前のディレクトリがいろいろな場所にあるのは、このような事情によるものです。
現在はこのような制約はほとんどありませんので、同じような役割のディレクトリは片方を“リンク(シンボリックリンク)”にして、“「/bin」と「/usr/bin」は実際には同じ場所になっている”という運用が多くなっています(※)。リンクについてはこの後の連載で取り上げます。
※この場合も、一般ユーザーの個人ファイルを保存する「/home」ディレクトリだけは別のディスク(別のパーティション)にしているかもしれません。「/home」だけを別にしておけば、新しい環境になっても「/home」だけはそのまま移行できますし、ユーザーが増えた場合は「/home」を大容量ディスクに入れ替えればよい、という運用が可能になります。
Copyright © ITmedia, Inc. All Rights Reserved.