この記事を書くきっかけ
ディレクトリにどのファイルが入っているかを表示してくれるlsコマンド。実際によく使用します。しかし、ただls
と打ち込むことがほどんどで、他にlsコマンドでできることをよく知りません。せっかくなので、lsコマンドをうまく使いこなしたいと思い、オプションをまとめてみました。
lsコマンドのオプションは、調べてみるとかなりの量がありましたので、知っておいたら便利そうだな〜と思うものだけをピックアップしました
lsコマンドの基礎情報
コマンド:ls
説明:ファイルやディレクトリの一覧を表示する
書式:ls [オプション] [パス]
用途:ディレクトリの内容を確認するために使用されます。ファイルやディレクトリの詳細情報や属性を表示することができます。
パスの指定:パスを指定しない場合、カレントディレクトリの内容が表示されます。
lsコマンドのオプション
option | 説明 |
---|---|
-a | 隠しファイルを含め、すべてのファイルを表示する |
-A | 「.」「..」以外のすべてのファイルを表示する |
-d | ディレクトリそのものの情報を表示する |
-F | ディレクトリは「/」、シンボリックリンクは「@」、実行可能ファイルは「*」を表示する |
-G | ファイルやディレクトリを色分けして表示する |
-h | サイズの単位を表示する([-l]オプションを同時に指定する) |
-l | 詳細情報を表示する |
-r | 逆順に表示する |
-S | サイズの大きい順にソートして表示する |
-s | サイズをブロック単位で表示する |
-t | 修正時刻順にソートして表示する |
lsコマンド逆引き
指定したディレクトリの内容を一覧を表示したい
コマンド:ls [ディレクトリのパス]
$ ls ~/Documents
project1 report.pdf notes.txt
project2 data scripts
ファイルとディレクトリを区別して表示したい
コマンド:ls -F [ディレクトリのパス]
$ ls ~/Documents
project1/ report.pdf notes.txt
project2 data scripts
隠しファイル(ドットファイル)も含めてすべてのファイルを表示したい
コマンド:ls -a
$ ls -a ~/Documents
. .. .hiddenfile project1
report.pdf notes.txt project2 data
scripts
「.」「..」はいらないので、それ以外のすべてのファイルを表示したい
コマンド:ls -A
$ ls -A ~/Documents
.hiddenfile project1 report.pdf notes.txt
project2 data scripts
ファイルやディレクトリの詳細情報を表示したい
コマンド:ls -l
$ ls -l ~/Documents
total 12
drwxr-xr-x 2 user user 4096 Jan 1 00:00 data
drwxr-xr-x 2 user user 4096 Jan 1 00:00 project1
drwxr-xr-x 2 user user 4096 Jan 1 00:00 project2
-rw-r--r-- 1 user user 2048 Jan 1 00:00 report.pdf
-rw-r--r-- 1 user user 1024 Jan 1 00:00 notes.txt
drwxr-xr-x 2 user user 4096 Jan 1 00:00 scripts
各ファイル・ディレクトリの詳細の見方
1. 最初の文字(-)はファイルタイプを示します。
-: 通常のファイル
d: ディレクトリ
l: シンボリックリンク
c: キャラクターデバイスファイル
b: ブロックデバイスファイル
2. 次の9文字(はファイルのパーミッションを示します。
- 最初の3文字:所有者(user)の権限(読み取りr、書き込みw、実行x)
- 次の3文字:グループ(group)の権限(読み取りr、書き込みw、実行x)
- 最後の3文字:その他のユーザー(other)の権限(読み取りr、書き込みw、実行x)
- 9文字の続きに@や+がある場合。
- @:ファイルやディレクトリに拡張属性(Extended Attributes)が存在することを示します。
- +:ファイルやディレクトリにACL(アクセス制御リスト)が設定されていることを示します。
- 9文字の続きに@や+がある場合。
-rw-r--r-- 1 user user 2048 Jan 1 00:00 report.pdf
この例では、
所有者(user)の権限(rw-):読み取り(r)、書き込み(w)。実行(x)の権限はない。
グループ(group)の権限(r--):読み取り(r)のみ。書き込み(w)や実行(x)の権限はない。
その他のユーザー(other)の権限(r--):読み取り(r)のみ。書き込み(w)や実行(x)の権限はない。
3. ハードリンクの数
ディレクトリの場合、この数はそのディレクトリ内のサブディレクトリの数を含むリンクの数を表示します。
4. 所有者
5. グループ
6. ファイルサイズ
7. 最終更新日時
8. ファイル名
ディレクトリそのものの情報を表示したい
コマンド:ls -dl
$ ls -dl ~/Documents
drwxr-xr-x 2 user user 4096 Jan 1 00:00 /home/user/Documents
ファイルのサイズの単位を表示したい
コマンド:ls -hl
$ ls -hl ~/Documents
total 12K
drwxr-xr-x 2 user user 4.0K Jan 1 00:00 data
drwxr-xr-x 2 user user 4.0K Jan 1 00:00 project1
drwxr-xr-x 2 user user 4.0K Jan 1 00:00 project2
-rw-r--r-- 1 user user 2.0K Jan 1 00:00 report.pdf
-rw-r--r-- 1 user user 1.0K Jan 1 00:00 notes.txt
drwxr-xr-x 2 user user 4.0K Jan 1 00:00 scripts
ファイルやディレクトリを色分けして表示したい
コマンド:ls -G
$ ls -G ~/Documents
data project1 report.pdf notes.txt project2 scripts
一般的な色分けの例
- ディレクトリ: 青
- シンボリックリンク: シアン(淡い青)
- 実行可能ファイル: 緑
- 圧縮ファイル(例:.zip、.tar.gz): 赤
- 画像ファイル(例:.jpg、.png): マゼンタ(紫)
- ビデオファイル(例:.mp4、.mkv): マゼンタ(紫)
- 通常のファイル: 白または端末のデフォルト色
ファイルやディレクトリを名前の逆順に並べ替えてして表示したい
コマンド:ls -r
$ ls -r ~/Documents
scripts project2 notes.txt report.pdf project1 data
ファイルサイズの大きい順に並べ替えて表示したい
コマンド:ls -S
$ ls -S ~/Documents
report.pdf project1 project2 data notes.txt scripts
ファイルサイズをこのように仮定すると上記のような結果になります。
- report.pdf - 2MB
- project1 - 1.5MB
- project2 - 1.5MB
- data - 1MB
- notes.txt - 512KB
- scripts - 256KB
サイズをブロック単位で表示したい
コマンド:ls -s
$ ls -s ~/Documents
3 data 4 project1 6 report.pdf 2 notes.txt 5 project2 1 scripts
前提条件
- 1ブロック = 512バイト
ファイルサイズの例
- data:1500バイト
- project1:2048バイト
- report.pdf:3000バイト
- notes.txt:1000バイト
- project2:2500バイト
- scripts:512バイト
ブロック数の計算
各ファイルのサイズに基づいて、必要なブロック数を計算します。ファイルシステムはブロック単位でディスクスペースを割り当てるため、ファイルサイズを512バイトで割り、端数が出た場合は切り上げます。
- data:1500バイト
1500 / 512 ≈ 2.93 → 3ブロック - project1:2048バイト
2048 / 512 = 4ブロック - report.pdf:3000バイト
3000 / 512 ≈ 5.86 → 6ブロック - notes.txt:1000バイト
1000 / 512 ≈ 1.95 → 2ブロック - project2:2500バイト
2500 / 512 ≈ 4.88 → 5ブロック - scripts:512バイト
512 / 512 = 1ブロック
修正時刻順に並べ替えて表示したい
コマンド:ls -t
$ ls -t ~/Documents
data project1 report.pdf notes.txt project2 scripts
各ファイルの修正時刻の想定
data:2024年7月5日 14:30
project1:2024年7月5日 14:00
report.pdf:2024年7月5日 13:00
notes.txt:2024年7月4日 18:00
project2:2024年7月3日 20:00
scripts:2024年7月2日 10:00
まとめ
lsコマンドはls
と打ち込む以外に使ってきませんでした。今回、いろんなオプションがあると知りました。特にls -a
やls -l
は便利だと思います。自分パソコンでいろいろ試してみて、使いこなせるようになりたいと思います。