Linux: ファイルシステムのナビゲーション — ls / cd / pwdとディレクトリ構造

Linuxはすべてのファイルとディレクトリを/をルートとするツリー構造で管理しています。このツリー構造はFilesystem Hierarchy Standard(FHS)と呼ばれます。

📋 前提条件:まず以下を完了していること

1. このレッスンで学ぶこと


2. 迷える初心者のストーリー

(1) 悩み:ディレクトリツリーで自分がどこにいるか分からない

小明は初めてサーバーにログインし、/の下の見慣れないディレクトリ名に圧倒されました:/bin/etc/var/usr…それぞれのディレクトリの用途も、自分が今どこにいるのかも分かりませんでした。

(2) 3つの地図

先輩エンジニアのボブが3つの「地図」を描いてくれました:

BASH
# Map 1: Where am I?
pwd
# Output: /home/charlie

# Map 2: What's here?
ls
# Output: Desktop  Documents  Downloads

# Map 3: Go there
cd /etc

(3) 得られるもの:自由にナビゲーション

小明は3つのコマンドの関係を理解しました:pwdは現在地を確認、lsは周囲を表示、cdは目的地へ移動。以来、どんなLinuxサーバーのファイルシステムでも自由にナビゲーションできるようになりました。


3. 知識ポイント

(1) FHS標準ディレクトリクイックリファレンス

Linuxのディレクトリ構造は統一基準に従っています。すべてを暗記する必要はありませんが、以下は必須です:

💡 ヒント:FHS(Filesystem Hierarchy Standard)の核心原則は「機能による分割」— /etcは設定、/varは可変データ、/usrはユーザープログラム。この論理を理解すれば、特定のディレクトリを忘れても、ファイルの機能から場所を推測できます。

ディレクトリ 意味 用途
/ ルートディレクトリ ファイルシステムの出発点。すべてのパスはここから始まる
/home ユーザーのホーム 各ユーザーの個人ファイル(例:/home/alice
/etc 設定ファイル システム設定ファイルとデーモン設定(例:Nginx、SSH)
/var 可変データ ログ(/var/log)、データベース、キャッシュデータ
/tmp 一時ファイル 再起動時に自動クリーンされる一時ディレクトリ

ℹ️ 注意/tmpは通常、システム再起動後にクリーンされます(最近のシステムはtmpfsを使用し、/tmpをメモリに格納)。重要なデータや長期が必要なファイルを/tmpに保存しないでください — 一時的な用途にのみ適しています。 | /usr | ユーザーシステムリソース | システムプログラムとライブラリ(/usr/bin/usr/lib)| | /bin | 基本コマンド | lscpmvなどの基本コマンド | | /opt | 追加ソフトウェア | サードパーティソフトウェアのインストールディレクトリ |

(2) 絶対パスと相対パス

種類 特徴
絶対パス /から始まり、ルートからのパス /home/alice/Documents/report.md
相対パス 現在のディレクトリからのパス Documents/report.md/home/aliceにいる場合)
TEXT
# Currently in /home/alice
# Using an absolute path
cd /etc/nginx

# Using a relative path (same effect, starting from current directory)
cd ../../../etc/nginx

(3) ...の特別な意味

記号 意味
. 現在のディレクトリ
.. 親ディレクトリ
~ 現在のユーザーのホームディレクトリ
~alice ユーザーaliceのホームディレクトリ
- 前のディレクトリ(cdのみ)
💡 ヒントcd -で前の作業ディレクトリに素早く戻れます — 2つのディレクトリ間を頻繁に行き来する場合に非常に便利です。例えば、/var/log/etc/nginxを頻繁に切り替える場合、毎回cd -と入力するだけです。

TEXT
# Currently in /home/alice/projects
cd .       # No movement (stays in current directory)
cd ..      # Move to /home/alice
cd ../..   # Move to /home
cd ~       # Move to /home/alice
cd -       # Go back to previous directory

(4) よく使うlsオプション

TEXT
# Basic usage
ls              # List filenames (compact)
ls -l           # Long format (permissions/owner/size/time)
ls -a           # Show all files (including hidden files starting with .)
ls -la          # Common combination
ls -lh          # Human-readable file sizes (KB/MB/GB)
ls -R           # Recursively list subdirectories
ls -S           # Sort by file size
ls -t           # Sort by modification time

(5) ワイルドカード

ワイルドカード 一致ルール
* 任意の数の文字 *.txt.txtで終わるすべてのファイルに一致
? 1文字 file?.mdはfile1.md、file2.mdに一致
[abc] セット内の任意の1文字 file[12].mdはfile1.md / file2.mdに一致
[!abc] セット内の文字を除外 [!a-z]*はアルファベットで始まらないファイルに一致
BASH
# Wildcard examples
ls *.md                # List all Markdown files
ls file?.txt           # List file1.txt, file2.txt, etc.
ls [abc]*              # List files starting with a, b, or c
ls [0-9]*              # List files starting with a digit

(6) ▶ サンプル:pwd — 現在地を教えて

BASH
# Whenever you're unsure of your current location, use pwd
pwd
# Output: /home/alice

# Try after switching to a different directory
cd /etc
pwd
# Output: /etc

出力:

TEXT
/home/alice
/etc

(7) ▶ サンプル:cd — ディレクトリ間を移動

TEXT
# Go home
cd ~

# Go back to previous directory
cd /etc
cd /var/log
cd -    # Back to /etc

# Go to root
cd /

# Go to a specific user's home directory
cd ~alice

(8) ▶ サンプル:ls — 中身を見せて

TEXT
# Compact mode
ls /etc

# Long format (includes permissions, size, modification time)
ls -l /etc

# Show hidden files
ls -la ~

# Human-readable sizes
ls -lh /var/log

# Recursive view
ls -R ~/projects | head -20

# Sort by file size (largest first)
ls -lhS /var/log

(9) ▶ サンプル:隠しファイル

Linuxでは、.で始まるファイルやディレクトリは隠しファイルです。lsはデフォルトでこれらを表示しません。

BASH
# View hidden files in home directory
ls -la ~

# Common hidden files and directories
# .bashrc        bash configuration
# .bash_profile  Login Shell configuration
# .gitconfig     Git configuration
# .ssh/          SSH keys and configuration
# .vimrc         vim configuration

出力:

TEXT
total 48
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 .
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 ..
-rw-r--r--  1 alice alice  220 Jul  8 10:23 .bash_logout
-rw-r--r--  1 alice alice 3771 Jul  8 10:23 .bashrc
-rw-r--r--  1 alice alice  807 Jul  8 10:23 .profile
drwx------  2 alice alice 4096 Jul  8 10:23 .ssh
-rw-r--r--  1 alice alice  256 Jul  8 10:23 .vimrc

(10) ▶ サンプル:ワイルドカードの実践

TEXT
# List all .log files
ls -la /var/log/*.log

# List files whose names start with "access"
ls -la /var/log/access*

# Delete all .tmp files
rm *.tmp

# Copy all .jpg files to another directory
cp *.jpg ~/Pictures/

(11) ▶ 総合例:ファイルシステム冒険

BASH
# Xiao Ming's first filesystem adventure

# 1. Where am I?
pwd

# 2. See what's in the root directory
ls -la /

# 3. Go to /etc and check system configuration
cd /etc
ls | head -20

# 4. Go to /var/log for logs
cd /var/log
ls -lhS | head -10    # Top 10 largest log files

# 5. Go back home
cd ~
ls -la

# 6. See what's on the desktop
ls -la ~/Desktop

❓ よくある質問

Q: /~の違いは? A: /はルートディレクトリで、ツリー全体の最上位です。~は現在のユーザーのホームディレクトリ(通常/home/username)です。ルートは1つだけですが、各ユーザーにはホームディレクトリがあります。

Q: なぜ.で始まるファイルは隠しファイルなのですか? A: 慣習です — .で始まるファイルは「設定ファイル」や「システムファイル」と見なされ、日常的な使用でユーザーが見る必要のないものです。これによりlsの出力のノイズが減ります。

Q: ls -l出力の最初の列drwxr-xr-xは何を意味しますか? A: 最初の文字はファイルタイプ(dはディレクトリ、-は通常ファイル、lはリンク)。次の9文字は3つのグループに分かれます:ファイル所有者(ユーザー)の権限(3ビット)、グループの権限(3ビット)、その他の権限(3ビット)。r=読み取り、w=書き込み、x=実行。

Q: /tmpのファイルは再起動後に消えますか? A: デフォルトでは、はい。多くのシステムは起動時に/tmpをクリーンします。したがって、/tmpは一時ファイルのみに使用し、重要なデータは保存しないでください。

Q: 長いパスを素早く切り替えるには? A: Tab補完(最初の数文字を入力してTab)、cd -で戻る、pushd/popdでディレクトリスタックを管理、またはCDPATH環境変数を使用。


📖 まとめ


📝 練習問題

  1. 基本(難易度 ⭐)pwdで現在地を確認し、cd /でルートディレクトリに移動し、ls -la /で全ファイルを一覧表示する
  2. 中級(難易度 ⭐⭐)cd ~でホームに戻り隠しファイルを確認、/var/logに移動してログディレクトリを確認、cd -で両方を切り替え、最後に/etcls *.confを実行して設定ファイルを見つける
  3. 上級(難易度 ⭐⭐⭐):システムのルートディレクトリ構造図を描く(5つ以上のFHS標準ディレクトリを含む)、各ディレクトリの用途と書き込み可否を注記する
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%