ここでは、Linuxコマンド の一つである、lsコマンドについて説明します。
lsコマンドの書式
lsコマンドの基本的な書式は以下の通り。
ls [OPTION]... [FILE
/DIRECTORY]...
ここで、[OPTION]
はコマンドのオプションを指定する部分であり、[FILE/DIRECTORY]
は表示したいファイルやディレクトリの名前を指定する部分です。
[OPTION]
と[FILE/DIRECTORY]
は省略可能であり、[FILE/DIRECTORY]
が省略された場合はカレントディレクトリの内容が表示されます。
lsコマンドの一般的なオプション
以下は、lsコマンドの一般的なオプションとその分類ごとの説明をまとめた資料です。
表示フォーマットに関するオプション
オプション | 名前の由来と説明 |
---|---|
-l | longの略で、詳細な情報を含む形式でファイルを表示 |
-1 | 数字の1。1行に1つのファイルを表示 |
出力フォーマットに関するオプション
オプション | 名前の由来と説明 |
---|---|
-a | allの略で、隠しファイルを含めて全てのファイルを表示 |
-d | directoryの略で、ディレクトリ自体を表示 |
-G | no-gropeの略で、グループ名を表示しない(-lと併用したとき) |
サイズに関するオプション
オプション | 名前の由来と説明 |
---|---|
-h | human-readableの略で、ファイルサイズを人間が読みやすい単位で表示 |
-S | sizeの略で、ファイルサイズの大きい順に表示 |
その他のオプション
オプション | 名前の由来と説明 |
---|---|
-t | timeの略で、更新日時の新しいファイルから順に表示する。 |
-r | reverseの略で、表示順序を反転する。 |
-R | recursiveの略で、ディレクトリ以下の全てのファイルを表示する。 |
--help | ヘルプを表示する。 |
lsコマンドを実行した結果の読み方
Linuxのls -l
コマンドを実行すると、ファイルやディレクトリの情報が以下のような形式で表示されます。
drwx------ 2 user group 4096 Jan 1 12:34 directory_name
-rw-r--r-- 1 user group 1024 Jan 1 12:34 file_name
それぞれの列(半角スペースで区切られた単位)には、以下の情報が含まれています。
- ファイルの属性
- drwx------
- -rw-r--r--
- ハードリンクの数
- 2
- 1
- ファイルの所有者
- user
- ファイルが属するグループ
- group
- ファイルのサイズ
- 4096
- 1024
- ファイルが最後に変更された日時
- Jan 1 12:34
- ファイル名
- directory_name
- file_name
ファイル属性の見方
ファイルの属性の1桁目は、以下のように表されます。
属性 | 意味 | 説明 |
---|---|---|
- | 通常のファイル | 一般的なファイル |
d | ディレクトリ | ファイルをまとめたディレクトリ |
※これ以外にもファイル属性はありますが、それらは次項「その他のファイル属性」で例を示します。
ファイルのパーミッションは、左から3文字ずつで表され、所有者、グループ、その他のユーザーに対する読み込み、書き込み、実行の権限を表しています。パーミッションの3文字目が次のように表されます。
r
: 読み込み可能w
: 書き込み可能x
: 実行可能
例えば、 drwx------
という属性は、ディレクトリを示し、所有者に読み書き実行の権限があり、グループや他のユーザーには権限が与えられていないことを表します。
drwx------
# 1桁目:d(ディレクトリ)
# 234桁目:rwx 所有者に読み書き実行の権限があり
# 456桁目:--- グループのユーザーには権限が与えられていない
# 789桁目:--- その他のユーザーには権限が与えられていない
-rw-r--r--
という属性は、通常のファイルを表し、所有者に読み書きの権限があり、グループや他のユーザーには読み取りの権限が与えられていることを表します。
-rw-r--r--
# 1桁目:-(通常のファイル)
# 234桁目:rw- 所有者に読み書きの権限があり
# 456桁目:r-- グループのユーザーには読み込みの権限が与えられている
# 789桁目:r-- その他のユーザーには読み込みの権限が与えられている
その他のファイル属性
以下に、それぞれのファイル属性の意味と説明をテーブルでまとめました。
属性 | 意味 | 説明 |
---|---|---|
l | シンボリックリンク | ファイルやディレクトリへのショートカット |
c | キャラクタデバイス | 文字単位でデータを読み書きするデバイス |
b | ブロックデバイス | ブロック単位でデータを読み書きするデバイス |
p | FIFO(名前付きパイプ) | プロセス間通信を行うための仮想的なファイル |
s | ソケット | プロセス間通信を行うための仮想的なファイル |
以下は、それぞれのファイル属性に対する例です。
l
: シンボリックリンクを示す
lrwxrwxrwx 1 user group 4 Feb 1 12:34 link_name -> target
c
: キャラクタデバイスを示す
crw-rw---- 1 user group 1, 3 Feb 1 12:34 /dev/null
b
: ブロックデバイスを示す
brw-rw---- 1 user group 8, 1 Feb 1 12:34 /dev/sda1
p
: FIFO(名前付きパイプ)を示す
prw-r--r-- 1 user group 0 Feb 1 12:34 pipe_name
s
: ソケットを示す
srwxr-xr-x 1 user group 0 Feb 1 12:34 socket_name
これらの属性は、ファイルやデバイスの種類を示し、それに応じた特別な扱いがされる場合があります。
例えば、デバイスファイルの場合、ファイルのサイズが通常のファイルとは異なるため、ls -l
で表示されるサイズ情報はデバイスのサイズではありません。
また、シンボリックリンクの場合、ファイルパスがリンク先のファイルを参照しているため、リンク先のファイル情報が表示されます。
リンク先のファイルが削除された場合、シンボリックリンクは無効なリンクとなります。
キャラクタデバイスは、文字単位でデータを読み書きするためのデバイスです。たとえば、ターミナルデバイスはキャラクタデバイスであり、文字列を入出力するために使用されます。
ブロックデバイスは、ブロック単位でデータを読み書きするためのデバイスです。たとえば、ハードディスクドライブはブロックデバイスであり、データの永続的な保存に使用されます。
FIFOは、プロセス間通信を行うための仮想的なファイルです。プロセス間でデータをやりとりするために使用されます。
ソケットは、プロセス間通信を行うための仮想的なファイルです。ネットワーク通信など、ネットワークを介したプロセス間通信に使用されます。