Linux ls コマンド: ファイルとディレクトリの一覧表示
Linux の ls コマンドは、ディレクトリ内のファイルとサブディレクトリの一覧を表示します。ls -la を使用すると、隠し項目、権限、所有者、サイズ、変更日時などの詳細情報を確認できます。
現在のディレクトリまたは指定したパスを一覧表示する
ターミナルで次のコマンドを実行すると、現在の作業ディレクトリ内の項目が表示されます。現在の場所はpwdで確認できます。
pwd
ls
別のディレクトリの内容を表示するには、パスを指定します。絶対パスと現在の場所に基づく相対パスの両方を使用できます。
ls /var
デフォルトでは、名前がドットで始まる隠し項目はリストに含まれません。名前や表示順序はシステムやロケールの設定に依存します。lsはリストを読み取るためのコマンドであり、ファイルを削除したり変更したりすることはありません。
隠し項目と詳細情報の表示
-aはドットで始まる名前を含み、-lは詳細フォーマットで表示します。両方のオプションを同時に使用することもできます。
ls -a
ls -l
ls -la
ls -a は現在のディレクトリに対して . を、親ディレクトリに対して .. を表示します。GNU ls -A は隠し項目を表示しますが、これら2つのエントリは省略されます。サイズを人間に読みやすい単位で表示するには、詳細リストに -h を追加します。
ls -lah
例えば、1K、2M のように表示できます。出力は対象ファイルやシステム設定によって異なります。
詳細リストの読み取り
以下は通常のファイルを示す例です。日付形式、名前、数字は実際の環境によって異なります。
-rw-r--r-- 1 user group 12 Jan 15 10:30 notes.txt
-rw-r--r--: 最初の文字-は通常のファイルであり、残りは所有者、グループ、およびその他の権限を示します。dで始まる場合、それはディレクトリです;lで始まる場合、それはシンボリックリンクです。1 user group: ハードリンクの数、所有者、および所有グループ。12: 基本詳細リストでのファイルサイズ(バイト単位)。-hを使用すると、読みやすい単位に変更されます。Jan 15 10:30 notes.txt: デフォルトでは、最終変更日時と名前。出力形式はロケールおよびオプションに依存します。
ディレクトリのサイズの項目は、その中のファイルのサイズの合計ではありません。ディレクトリ全体のディスク使用量を確認するには、du のようなツールを使用してください。リンク先は通常、詳細リストで name -> target 形式で表示されます。
並べ替えの確認とディレクトリ自体の確認
-t はデフォルトで最新の変更日時順に並べ替えます。-r を一緒に使うと順序が逆になります。
ls -lt
ls -ltr
内部のリストではなく、ディレクトリ自体の権限や所有者を確認するには、-d を使用してください。
ls -ld /var
-R はサブディレクトリも再帰的にリストしますので、大きなディレクトリツリーでは出力が多くなることがあります。詳細なオプションの意味は、GNU ls マニュアル または man ls を確認してください。
名前パターンでリストを絞り込む
Bash では、アスタリスク*は 0 文字以上に一致する名前パターンです。次のコマンドは、名前が.confで終わる/etc内の項目を検索します。
ls -d /etc/*.conf
シェルはまずパターンに一致する名前を展開し、その後 ls に渡します。-dが入力された場合、一致する項目がディレクトリであってもディレクトリ名自体が表示されます。典型的な Bash 設定では、ドットで始まる隠し項目は自動的に一致しません。一致する名前がない場合、結果はシェルのオプションによって異なることがあり、エラーが出るかパターンがそのまま渡されるかのいずれかになります。
パスにスペースが含まれている場合は、ls "my folder"のようにパスを引用符で囲んでください。一般に、パターン自体を引用符で囲むと、シェルはアスタリスクを展開しません。詳細については、Bashのファイル名展開ドキュメントを参照してください。
ディスクデバイスおよびエラーの確認
ls -l /dev/sd*は、名前がsdで始まるデバイスファイルと一致するリストを表示できます。ただし、すべてのディスクやパーティションがこの名前を使用しているわけではありません。NVMeなどの他のデバイスはリストに含まれていない場合があるため、ブロックデバイスやレイヤーを確認する際にはlsblkを使用する方が適切です。
lsblk
リストが表示されない場合、または Permission denied が表示される場合は、パスの存在とアクセス権限を確認してください。出力が期待したものと異なる場合は、シェルエイリアス type ls を確認し、ディストリビューションの説明および ls --help も確認してください。




