Linux入門④|Cドライブはどこ?Linuxのファイル構造

Linux入門④|Cドライブはどこ?Linuxのファイル構造 Linux

ファイルの置き場所の考え方が、Windows とは、まったく違います。「D ドライブは、どこにありますか? USB メモリが、見つからないんですけど」

Linux入門④|Cドライブはどこ?Linuxのファイル構造

Windows から来た人が、Linux で、いちばん最初に、つまずくのが、これです。C ドライブも、D ドライブも、ありません。あるのは、ひとつの、大きな木だけです。

シリーズ「Windows ユーザーのための、やさしい Linux 入門」の第4回です。前回(第3回:基本コマンド10選)では、動かし方を覚えました。今回は、Linux の「地図」。ファイルの置き場所の、考え方です。

結論:Linux のファイルには「ドライブ」がなく、すべてが「1本の木」にぶら下がる

比べる点 Windows Linux
構造 ドライブごとに、別の木(C:、D:) 1本の木。一番上が /(ルート)
区切り文字 \(円記号) /(スラッシュ)
大文字・小文字 区別しない 区別する
追加のディスク 新しいドライブ文字がつく(E:) 木の、どこかの枝に、つなぐ(マウント)
拡張子 動作を決める(.exe など) 動作とは関係ない(権限で決まる)

Windows の「C ドライブの、一番上」に相当するのが、Linux の /です。ただし、/ の下に、C も D も、ありません。すべての場所は、/ から、たどれます。

ファイルを置く主要なディレクトリ:「何が、どこにあるか」

Linux の man ページ(ファイル階層の説明)で、各ディレクトリの役割が、定義されています。

ディレクトリ 役割 Windows での感覚
/ 一番上(ルート)。すべての始まり C:\ に近い
/home ユーザーのホームディレクトリが、並ぶ C:\Users
/root root ユーザーのホームディレクトリ 管理者専用の作業場
/etc 設定ファイル(このマシン固有のもの) C:\ProgramData や、レジストリの一部
/var サイズが、変化していくデータ(ログなど) ログや、キャッシュの置き場
/tmp 一時ファイル。いつ消されても、おかしくない C:\Windows\Temp
/usr 共有できる、ほぼ読み取り専用のデータとプログラム C:\Program Files に近い
/bin 起動や修復に必要な、基本のコマンド C:\Windows\System32 の一部
/dev デバイスを表す、特殊なファイル デバイスマネージャーで見るもの
/proc 動いているプロセスや、カーネルの情報が見える タスクマネージャーの情報の源
/mnt 一時的に、つなぐファイルシステムの置き場 (WSL では、Windows のドライブがここに現れる)

情シスが、いちばん、お世話になるのは、この3つです。

場所 用途
/etc 設定を見る・直す(サービスの設定など)
/var/log ログを見る(障害調査)
/home ユーザーのデータを確認する

「Linux の /etc は、Windows のレジストリ」ではない

Windows の設定は、レジストリという、ひとつのデータベースに集められています。Linux の設定は、ほとんどが、テキストファイルで、/etc の下にあります。

比べる点 Windows Linux
設定の場所 レジストリ、設定画面 /etc の、テキストファイル
編集の方法 レジストリエディター、設定画面 テキストエディターで、直接編集
変更の確認 難しい ファイルの差分を見れば、分かる
バックアップ レジストリのエクスポート ファイルをコピーするだけ

「設定が、テキストファイル」は、情シスにとって、大きなメリットです。変更前後の差分を取れて、バージョン管理もできます。

ファイルのパス:「どう、場所を書くか」

種類 書き方 例
絶対パス / から、全部書く /home/taro/work/memo.txt
相対パス 今いる場所から、書く work/memo.txt、../memo.txt
記号 意味
. 今いる場所
.. 1つ上
~ ホームディレクトリ
/ ルート

絶対パスは、どこからでも、同じ場所を指すので、スクリプトや設定ファイルでは、絶対パスを使うのが、無難です。

大文字・小文字を区別する

Windows は、Memo.txt と memo.txt を、同じとして扱います。Linux は、別のファイルとして扱います。

touch Memo.txt memo.txt MEMO.TXT
ls

実行結果(例):

MEMO.TXT  Memo.txt  memo.txt

3つとも、別のファイルです。「ファイルが、見つかりません」と出たら、まず、大文字・小文字を、疑ってください。

隠しファイル:. で始まる名前

Linux では、名前が、.(ドット)で始まるファイルは、隠しファイルになります。Windows の「隠し属性」ではなく、名前で決まります。

ls
ls -a

実行結果(例):

$ ls
Documents  Downloads  memo.txt

$ ls -a
.  ..  .bash_history  .bashrc  .profile  Documents  Downloads  memo.txt
ファイル 役割
.bashrc Bash の設定(起動のたびに読まれる)
.profile ログイン時の設定
.bash_history 打ったコマンドの履歴

設定ファイルが、隠しファイルであることが、多いです。「設定が、どこにあるか分からない」ときは、ls -a で、隠れているものを探しましょう。

マウント:「別のディスク」は、どこに?

Linux では、別のディスクや USB メモリを、木の、どこかの枝に「つなぐ」ことを、マウントと言います。

場面 Windows Linux
USB メモリを挿す E: として、自動で現れる /mnt や /media の下などにマウントされる
ネットワークの共有 \\server\share どこかのディレクトリに、マウントする
全体の状況を見る エクスプローラーの「PC」 df -h(第10回)

WSL の場合:Windows のドライブは /mnt/c

WSL では、Windows の C ドライブが、/mnt/c として見えます。

cd /mnt/c/Users
ls
Windows WSL(Linux 側から)
C:\Users /mnt/c/Users
D:\ /mnt/d

Linux から、Windows のファイルを、コピーするときに、役立ちます。練習用の環境を消す前に、大事なファイルを、/mnt/c/ の下にコピーして、退避しておくと、安心です(第2回の、--unregister の話です)。

Windows ↔ Linux:パスの対応表

Windows Linux
C: の Users の下の、自分のフォルダー /home/taro
C:\Windows\System32 /bin、/usr/bin など
C:\Program Files /usr、/opt
C:\Windows\Temp /tmp
イベントビューアー(ログ) /var/log と、journalctl(第7回)
環境変数 PATH(; 区切り) PATH(: 区切り)(第6回)

僕のやらかし:大文字と小文字で、迷子になった

Windows の感覚で、/etc の下の Hosts を、開こうとしました。「そのようなファイルは、ありません」。何度も、打ち直しました。

正しくは、/etc の下の hosts(すべて小文字)でした。Windows の hosts ファイルに慣れていたので、頭文字を大文字にする癖が、出ていたのです。

「メニューの『ハンバーグ』と、『はんばーぐ』は、同じ」と思って注文したら、厨房に伝わらなかったようなものです。Linux は、文字の違いを、厳密に見ます。Tab 補完を使えば、この間違いは、起きません。

今回覚えたこと

項目 意味
/ ルート。すべての始まり
/etc 設定ファイル
/var ログなど、変化するデータ
/home ユーザーのデータ
/tmp 一時ファイル
大文字・小文字 区別する
. で始まる名前 隠しファイル
マウント ディスクを、木につなぐ

次回予告

次回は、Linux 初心者が、最初にぶつかる壁「Permission denied(権限がありません)」です。ユーザー、グループ、root、sudo、rwxを、Windows の「管理者として実行」と比べながら、整理します。

→ 第5回:Permission denied の読み方

参考

ITもごはんも、腹八分目が長続きのコツ!

コメント