Linux コマンド cd ls 意味を徹底解説:ディレクトリ移動と一覧表示の基本

IT入門辞典

はじめに

Linux のシェル操作には「cd」と「ls」というコマンドが欠かせません。
これらは「ディレクトリを移動する」「ファイルやディレクトリの一覧を表示する」という基本操作に対し、最も頻繁に呼ばれるツールです。
本記事では、初心者でも直感的に使用できるよう、cdls の動作原理、主なオプション、よくあるミス、実際の例を徹底的に解説します。
これを読めば、ターミナルでのファイル操作が格段にスムーズになり、作業効率が向上することでしょう。


cd コマンド:ディレクトリを移動する

1. 基本的な使い方

cd DIRECTORY
  • DIRECTORY: 移動したいパス。
    • 相対パス../folder./subdir
    • 絶対パス/home/user/Documents
    • 特殊文字~ はホームディレクトリ、. は現在のディレクトリ)

cd /usr/local/bin     # 絶対パスで移動
cd ..                 # 親ディレクトリへ
cd -                  # 前にいたディレクトリへ戻る

2. cd に関するよくある質問

質問回答
cd だけを入力したら、どこへ戻る?ホームディレクトリ($HOME)へ戻ります。
cd - を入れたら何が起きる?直前にいっていたディレクトリへ戻ります(履歴が一つだけ保存される)。
cd でエラーになる理由は?指定したパスが存在しない、あるいはアクセス許可が無い場合です。

3. 環境変数を利用したカスタマイズ

3‑1. ~ の展開

~user の形式で他人のホームディレクトリへ移動可能です。

cd ~root   # ルートユーザーのホームへ

3‑2. CDPATH で検索ディレクトリを増やす

シェルに検索パスを追加し、cd でパスを省略しても探し出せるようにします。

export CDPATH=~/projects:/opt/tools
cd projXYZ   # ~/projects/projXYZ を自動検索

4. 迷わないためのディレクトリ構造確認

pwd(Print Working Directory)で現在のフルパスを確認し、ls -d */ で現在のディレクトリ内のサブディレクトリだけをリスト表示できます。

pwd
# /home/user/projects
ls -d */
# backend/   docs/   frontend/

5. 典型的なミスと対処法

話題問題回避策
cd /var/tmp で失敗パーミッション不足sudo cd /var/tmp は無効。sudo で別シェルを起動するか、su - で root に切り替える。
cd ../ が思った場所に行かないシンボリックリンクの中にいるcd -P(物理的パス)を使うことでリンク経由でないパスへ移動。
cd で予期せぬディレクトリへ戻るCDPATH が設定されているunset CDPATH で一時的に解除。

ls コマンド:ファイルやディレクトリの一覧表示

1. ls の基本

ls [オプション] [パス]
  • パスを省略すると現在ディレクトリ内を表示。
ls
ls -l
ls -a

2. 主なオプション一覧と効果

オプション説明
-a / --allドットで始まる隠しファイルも表示
-l長いフォーマット(パーミッション・オーナー・サイズ・日時)
-hファイルサイズを人間が読みやすい単位に変換
-R再帰的にサブディレクトリも表示
-t最終更新時刻でソート
-Sファイルサイズでソート
-rソート順を逆に
-iiノード番号を表示
-dディレクトリ自体を対象にリスト
-Fファイル種別の識別文字を末尾に付ける (/=ディレクトリ、*=実行ファイル等)
-x行単位で横に並べて表示
--colorカラー表示(デフォルトで有効)
-11列表示

例:詳細・カラー・隠しファイルを同時に表示

ls -la --color

3. リストのカスタマイズ:別名エイリアス

頻繁に使うオプションをエイリアスにして、ワンクリックで実行できるようにします。

alias ll="ls -la --color"
alias la="ls -aF"

4. ls でよくある誤解と真実

誤解実際
ls -l でファイルサイズがバイト単位のみ実はサイズはバイト。-hK, M, G 付かす。
ソートはデフォルトで名前順デフォルトは名前順で大小文字を区別しない(設定により異なる)。-r で逆順、-t で更新順。
ls -a で全てが表示される... も含まれる。 -A.. を除外。

5. 失敗例とデバッグ

5‑1. 大きなディレクトリで ls が遅い

  • 原因: 何十万ものファイルがあると処理が重い。
  • 対処: ls -lhS でサイズ順に表示して、先頭で大きいものを把握。
  • 補助ツール: find . -maxdepth 1 | wc -l でファイル数を数える。

5‑2. ls がエラーになる

  • 典型的なメッセージ: ls: cannot access 'xxx': No such file or directory
  • 原因: 指定パスが無い、権限が無い、またはバイナリ自体が壊れている。
  • 確認: stat xxx でメタ情報を確認。

6. 高度な利用シーン

シーンコマンド例
特定拡張子の全検索find . -type f -name "*.log" -exec ls -l {} +
更新日時で絞り込みfind . -mtime -1 -type f -print
磁力のないファイルのみfind / -type f -empty -print
ディレクトリ構造をツリー形式で表示tree -L 2tree は別途インストールが必要)

6‑1. find と ls の連携

find は大量検索に、ls は表示に特化したツールです。以下のように組み合わせると、効率的に情報を抽出できます。

# 1GB 超過ファイルを一覧表示
find . -type f -size +1G -print0 | xargs -0 ls -lh --color

6‑2. 色付き出力で視覚的に分かりやすくする

多くのディストリビューションでデフォルトで --color=auto が有効です。カスタム色を設定したい場合は LS_COLORS 環境変数を変更します。

# 例:実行ファイルを赤で表示
export LS_COLORS=$LS_COLORS:'ex=31:'

cd と ls の組み合わせ:実務でよく利用されるワークフロー

コマンドシーケンス目的
cd ~/documents && ls -la文書フォルダへ移動し、全リストを確認
`ls -Rgrep "^total "`
`cd /var/log && ls -lthead -n 10`
cd .. && ls -d */親ディレクトリのサブディレクトリを一覧
mkdir -p projects/${YEAR}/${MONTH} && cd projects/${YEAR}/${MONTH}年月ごとにディレクトリを作成して移動

1. 効率的にフォルダ構造を把握する

# 1. ディレクトリツリー表示
tree -L 2

# 2. 大容量ディレクトリのみ抽出
du -h --max-depth=1 | sort -hr | head -n 10

2. ファイルを検索し、直感的に確認する流れ

# 1. テキストを含むファイルを検索
grep -rl "TODO" .

# 2. 検索結果を詳細リストで表示
xargs ls -lh < <(grep -rl "TODO" .)

まとめ:cd と ls のマスターに必要なポイント

  1. cd

    • ホームへ戻る (cd ~cdだけ)
    • 過去のディレクトリへ戻る (cd -)
    • 環境変数 CDPATH で検索パスを拡張
    • パーミッション・シンボリックリンクの理解
  2. ls

    • フィルタリングとソートオプションを組み合わせ(-laSth など)
    • 隠しファイル・色付き表示を活用
    • find と連携し、検索結果を即座に表示
  3. 実務への応用

    • 大規模なプロジェクトでサブディレクトリを高速でナビゲート
    • ログ分析・ファイルサイズ監視でリソース管理
    • ターミナル作業を効率化するエイリアスやスクリプト活用

Linux のターミナルはテキストベースでありながら、非常にパワフルです。cdls はその入り口に位置し、これらを使いこなすことで、ファイルシステムの裏側に潜む情報を瞬時に掴むことができるようになります。
今回解説した内容を土台に、さらに高度なツール(treencdufind など)やテキストエディタと組み合わせて、自分だけの効率化スキームを構築してみてください。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント