LINEで現役エンジニアに直接質問してみよう!登録無料

Linuxのディレクトリ構成(Windowsフォルダとの違いも解説)

WindowsユーザーがLinuxに触れてまず気づくのは「Cドライブが無いこと」だと思います。 Linuxはすべて「/(ルート)」と呼ばれる箇所を起点にしていて、木構造でファイルやフォルダ(Linuxではディレクトリという)が管理されています。 Windowsに例えるなら、「Cドライブ以外にドライブは存在せず、全てCドライブの中にある」という事です。

又、Linuxではフォルダの事をディレクトリと言ったり、ところどころ異なる箇所があるので確認していきましょう。

Linuxでよく使うディレクトリ関連の用語

これから、Linuxでよく使われるディレクトリ関連の用語を解説します。 Windowsでも通用する概念ですが、あまり聞かないと思います。ここでしっかりと理解しておきましょう。

ディレクトリ

Windowsで言う「フォルダ」と同じ意味で使われます。Linuxでは「ディレクトリ」と呼ばれます。

カレントディレクトリ

「操作を行っている今のディレクトリ」の事を「カレントディレクトリ」といいます。 Linuxでは、カレントディレクトリは「.(ドット)」で表します。

カレントディレクトリは「今のディレクトリ」という意味があるので、下記のパスはすべて同じ場所を示します。

  • /home/nethack
  • /home/./nethack
  • /home/nethack/.
  • /home/./nethack/.

カレントディレクトリの使われ方として、コマンドラインの引数やプログラム実行の際のパス指定があります。

コマンドラインの引数の例
$ mv nethack/* .
プログラム実行の際のパス指定
$ ./a.out

親ディレクトリ

あるディレクトリから見て、1つ上のディレクトリのことを親ディレクトリといいます。

親ディレクトリは「..(ドットドット)」で表します。

親ディレクトリは「今のディレクトリから見て見て1つ上のディレクトリ」を示すので、下記のパスはすべて同じ場所を示します。

  • /home
  • /home/nethack/..
  • /home/nethack/../../home

ホームディレクトリ

今、ログインしているユーザー専用に作られた専用ディレクトリの事です。「su」コマンドを使って、ログインユーザーを変更するとホームディレクトリも変わります。

ホームディレクトリは「~(チルダ)」で表します。

ホームディレクトリは、ユーザーごとに変わります。rootユーザーは「/root」。それ以外は「/home/<ユーザー名>」です。例えば「nethack」というユーザーでログインしている場合、そのホームディレクトリは「/home/nethack」になります。

ワイルドカード

カレントディレクトリにあるファイルやディレクトリすべてを指します。

例えば、「/home/nethack/*」すると、ホームディレクトリに存在するすべてのファイルのディレクトリを示すことになります。ただし、隠しファイルは対象外です。

Linuxのディレクトリ構成(基本編)

Linuxのディレクトリは役割ごとにファイルの配置場所が定められています。例えば、プログラムデータ、データベース、設定ファイルもそれぞれ別の場所に配置されます。また、それがシステムに関連するものなのか、ユーザーが後からインストールしたものかでも配置場所が変わります。

たくさんのディレクトリの役割がある中で、特によく使うディレクトリについて説明していきます。

  • /
  • /bin : ビン
  • /etc : エトセ
  • /opt : オプト
  • /sbin : エスビン
  • /usr : ユーザー
  • /var : バー
  • /home : ホーム
  • /root : ルート

/

Linuxでは、必ず一番上に1つだけの「/(ルート)」があります。新しく、HDDやSSDをつなげても、USBを挿しても、「/(ルート)」の下にくっつきます。つまり、「/(ルート)」はLinuxにある全てのディレクトリ、ファイルの一番始まりのディレクトリです。

これから紹介するディレクトリはすべて「/」の中に含まれます。

Windowsで言うところのローカルディスク「C:¥¥」と同じですが、「D:¥¥」「E:¥¥」など別の名前で複数のルートは作る事は出来ません。

/etc

/etc(エトセ)」は、様々なプログラムの設定ファイルが置かれるディレクトリです。

このディレクトリの中のどこに設定ファイルが配置されるかは、決まっていません。プログラム作成者次第になります。

yumapt-getを使ってサーバー構築に関するソフトウェアをインストールすると、設定ファイルだけはこのディレクトリに配置されるパターンが多いです。

最近のソフトウェアは、サービス名をディレクトリ名にして管理する場合が多いように感じます。昔からずっと存在しているソフトウェアは/etcに直接設定ファイルを配置しているケースもあります。

今からなにか設定ファイルを作る場合には、なにかディレクトリを作っていから配置するといいでしょう。

一例として、awsサーバーの/etcにどのようなファイルがあるのか見てみましょう。青で表示されているのが「ディレクトリ」、白が「ファイル」です。水色が「シンボリック」というものなのですが、ここでは割愛します。気になれば調べて見てください。

ディレクトリ名をよく観察すると、「ディレクトリ」には.dと書かれているものが多いですよね。これは、昔今ほどターミナルやプログラミング言語が便利では無かったので、判別しやすいように使われていた習慣です。「ディレクトリのd」と「デーモンのd」が混在している箇所もあります。

:::TODO:::
この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。