ls はいまいるディレクトリの中身を表示するコマンドです。-l や -a の意味、ls -l が出す各列の読み方を、ブラウザ上のターミナルでそのまま打ちながら確認できます。
最終更新: 2026-09-04
ls [オプション] [ファイルやディレクトリ]
引数を付けずに ls だけ打つと、いまいるディレクトリの中身が表示されます。
ディレクトリ名を渡すと、そのディレクトリの中身が表示されます。
このページのターミナルは、サンプルのプロジェクトディレクトリから始まります。
ls と打つと、こう表示されます。
$ ls
docs/ logs/ package.json README.md src/
| オプション | 意味 |
|---|---|
-l | 1行1件で、パーミッション・所有者・サイズ・更新日時まで表示する |
-a | . で始まる隠しファイルも表示する |
-h | サイズを 19K のような単位付きにする(-l と一緒に使う) |
-R | サブディレクトリの中身まで再帰的に表示する |
-t | 更新日時が新しい順に並べる |
-S | サイズの大きい順に並べる |
-r | 並び順を逆にする |
-d | ディレクトリの中身ではなく、ディレクトリ自体の情報を表示する |
-1 | 1行に1件だけ表示する(数字の1) |
短いオプションはまとめて書けます。ls -l -a と ls -la は同じ意味です。
ls は「とりあえず打つ」コマンドですが、状況によって付けるオプションは決まっています。
| 知りたいこと | 打つもの | 見るところ |
|---|---|---|
| ログの最新はどれか | ls -ltr | 一番下の行が最後に更新されたファイル |
| 容量を食っているのはどれか | ls -lhS | 上から順に大きいファイル |
| 権限が足りているか | ls -l | 左端の rwx |
| 設定ファイルはあるか | ls -a | . で始まる行 |
| 中身の構成を把握したい | ls -R | ディレクトリごとの見出し |
ls -ltr は特によく使われます。
更新日時順(-t)を逆(-r)にするので、最後に更新されたファイルが一番下に来ます。
行数の多いディレクトリでも、スクロールせずに最新が見えます。
ls -l の出力の読み方-l を付けると、1件につき1行で詳しい情報が出ます。
$ ls -l
total 20
drwxr-xr-x 2 user user 4096 Sep 4 21:08 docs/
drwxr-xr-x 2 user user 4096 Sep 4 21:08 logs/
-rw-r--r-- 1 user user 46 Sep 4 21:08 package.json
-rw-r--r-- 1 user user 36 Sep 4 21:08 README.md
drwxr-xr-x 2 user user 4096 Sep 4 21:08 src/
package.json の行を左から順に見ていきます。
| 列 | 例 | 意味 |
|---|---|---|
| 種類とパーミッション | -rw-r--r-- | 先頭1文字が種類、残り9文字が権限 |
| リンク数 | 1 | そのファイルを指すハードリンクの数 |
| 所有者 | user | ファイルを持っているユーザー |
| グループ | user | ファイルが属するグループ |
| サイズ | 46 | バイト数 |
| 更新日時 | Sep 4 21:08 | 最後に内容が変わった日時 |
| 名前 | package.json | ファイル名 |
先頭の -rw-r--r-- は、さらに4つに割れます。
- rw- r-- r--
種類 所有者 グループ その他
種類は - が通常ファイル、d がディレクトリ、l がシンボリックリンクです。
残りは3文字ずつの組で、読み取り r・書き込み w・実行 x が許可されていればその文字、されていなければ - が入ります。
つまり -rw-r--r-- は「通常ファイルで、所有者は読み書きでき、グループとその他は読み取りだけできる」という意味です。
1行目の total 20 は、そのディレクトリが使っているブロック数の合計です。
ファイルの数ではありません。
. で始まるファイルは既定では出てきません。
設定ファイルはこの形式が多いので、探しているファイルが見えないときは -a を疑ってください。
$ ls
docs/ logs/ package.json README.md src/
$ ls -a
./ ../ .env .gitignore docs/ logs/ package.json README.md src/
./ は自分自身、../ は1つ上のディレクトリを指します。
-l だけだとサイズはバイト数のままです。
-h を足すと単位が付きます。
$ ls -lh logs
total 20
-rw-r--r-- 1 user user 19K Sep 4 21:09 app.log
-S を付けるとサイズの大きい順に並びます。
-l と -h を足すと、どれがどれだけ大きいのかがそのまま読めます。
$ ls -lhS logs
total 20
-rw-r--r-- 1 user user 19K Sep 4 21:09 app.log
-R を付けると、サブディレクトリの中まで降りて表示します。
$ ls -R
.:
docs/ logs/ package.json README.md src/
./docs:
./logs:
app.log
./src:
index.js utils.js
存在しない名前を渡すとエラーになります。
$ ls nothing
ls: cannot access 'nothing': No such file or directory
打ち間違いか、いまいる場所が想定と違うかのどちらかです。
pwd で現在地を確かめてから打ち直してください。
ls -d は単体だとあまり役に立ちません。
ディレクトリ自体の情報を見るためのオプションなので、-l と組み合わせて ls -ld src のように使います。
並び順は名前順です。
-t を付ければ更新日時順になり、さらに -r を足せば古い順になります。
ls -ltr は、最後に更新したファイルが一番下に来るので、ログを見るときによく使われます。
ターミナル入門
基本コマンドを学ぶ
ターミナル基礎
よく使うコマンドを学ぶ
