ls

ディレクトリの中身をリスト表示する

ls, dir, vdir - ディレクトリの中身をリスト表示する
ls [ options ] [ file... ]
POSIX オプション: [-CFRacdilqrtu1]
GNU オプション (簡略形式): [-1abcdfghiklmnopqrstuvxABCDFGHLNQRSUX] [-w cols ] [-T cols ] [-I pattern ] [--block-size=SIZE] [--classify] [--color[={none,always,auto}]] [--file-type] [--full-time] [--format={across,commas,long,single-column,verbose,vertical}] [--human-readable] [--indicator-style={none,file-type,classify}] [--quoting-style={c,clocale,escape,literal,locale,shell,shell-always}] [--show-control-chars] [--si] [--sort={none,extension,size,time,version}] [--time={atime,access,ctime,status,use}] [--help] [--version] [--]
プログラム ls は、最初にディレクトリでない引き数 file をリスト表示する。それから、ディレクトリである引き数について、 それぞれのディレクトリにあるリスト表示可能なすべてのファイルを表示する。 オプション以外の引き数が何もない場合、デフォルトの引き数として `.' (現在のディレクトリ) を仮定する。 -d オプションは、ディレクトリを ディレクトリでない引き数として扱わせるようにする。 ファイル名が `.' で始まっていなければ、そのファイルは表示される。 `.' で始まる名前のファイルでも、-a オプションが指定されていれば表示される。 それぞれのファイルリスト (ディレクトリでないファイルのリストと 各ディレクトリ内のファイルのリスト) は、 現在のロケールにおける文字の順序に従って個別にソートされる。 -l オプションが指定された場合、 リスト中の全ファイルの合計サイズを表示する要約行が 各リストの前に付加される。 このサイズは選択されているブロックサイズを単位とする数値になる。 出力は標準出力に対して行われ、 -C オプションで複数列出力が要求されない限り、1 行に 1 エントリである。 しかし、端末に対する出力では、出力が 1 列または複数列の どちらになるかが定められていない。 オプション -1 と -C は、 それぞれ 1 列出力と複数列出力を強制させるために使用される。
-C
ファイルを複数列でリスト表示する。垂直方向にソートする。
-F
ディレクトリ名の後に `/' を、FIFO の名前の後に `|' を、 実行可能なファイル名の後に `*' をそれぞれ付加する。
-R
サブディレクトリがあれば、再帰的にリスト表示する。
-a
`.' で始まる名前のファイルをリスト表示に含める。
-c
ソート (-t) やリスト表示 (-l) のとき、 修正時刻ではなく状態変更時刻を使う。
-d
ディレクトリの中身を表示せず、 他のファイルと同じようにディレクトリ名をリスト表示する。
-i
ファイルのシリアル番号 (i-node 番号) をファイル名の出力の前に置く。
-l
ファイルのモード・リンクの数・所有者名・グループ名・ (バイト単位の) サイズ・タイムスタンプ・名前を (1 列形式で) 書き出す。 デフォルトでは、表示されるタイムスタンプは最終修正時刻である。 オプション -c と -u のときは、他の 2 つのタイムスタンプを選択する。 デバイススペシャルファイルの場合、通例として、サイズを表示する場所が デバイスのメジャー番号とマイナー番号に置き換えられる。
-q
ファイル名の中の非表示文字をクエスチョンマークで出力する。 (端末への出力では、このオプションをデフォルトにすることが許されている。)
-r
ソートの順序を逆にする。
-t
表示されるタイムスタンプでソートする。
-u
ソート (-t) やリスト表示 (-l) のとき、 修正時刻ではなく最終アクセス時刻を使う。
-1
出力を 1 列にする。
標準出力が端末の場合、出力は (垂直方向にソートされて) 複数列になる。 dir ( d という名前でもインストールされる) は `ls -C' と等しい。 つまり、デフォルトとして、 ファイルは垂直方向にソートされて複数列でリスト表示される。 vdir ( v という名前でもインストールされる) は `ls -l' と等しい。 つまり、デフォルトとして、ファイルは長い形式でリスト表示される。
-1, --format=single-column
1 行に 1 ファイルをリスト表示する。 標準出力が端末でない場合のデフォルトである。
-a, --all
`.' ではじまるファイルを含め、 ディレクトリ中のすべてのファイルをリスト表示する。
-b, --escape, --quoting-style=escape
ファイル名の中の非表示文字を表すため、 バックスラッシュとアルファベットのシーケンスや バックスラッシュと 8 進数のシーケンスを用いる。 これらのシーケンスは C 言語で使われているものと同じである。
-c
ディレクトリの内容をファイルの状態変更時刻 (inode の `ctime') でソートする。 長いリスト表示形式が使われる ( -l オプションの) 場合、修正時刻ではなく状態変更時刻が表示される。
-d, --directory
ディレクトリの中身を表示せず、 他のファイルと同じようにディレクトリ名をリスト表示する。
-f
ディレクトリの中身をソートせず、ディスク上にある順番にリスト表示する。 このオプションは -a も有効にする。 -f より前に -l , --color , -s が指定された場合、それらのオプションは無効になる。
-g
無視される。Unix との互換性のためにある。
-h, --human-readable
それぞれのサイズについて、 例えばメガバイトなら M といったサイズ文字を付加する。 10 の累乗ではなく 2 の累乗を用いるので、M は 1,048,576 バイトを表す。 10 の累乗にしたいときは -H または --si オプションを使うこと。
-i, --inode
それぞれのファイルについて、ファイル名の左に inode 番号 (ファイルシリアル番号やインデックス番号とも呼ばれる) を表示する。 (この番号が、あるファイルシステム上のそれぞれファイルを 他と重ならないように区別する。)
-k, --kilobytes
ファイルサイズがリスト表示される場合は、キロバイト単位で表示する。
-l, --format=long, --format=verbose
ファイル名に加えて、ファイルタイプ・アクセス権・ハードリンクの数・ 所有者名・グループ名・バイト単位のサイズ・タイムスタンプ (他の時刻が選択されなければ、修正時刻) を表示する。 ファイルの時刻が 6 カ月以上前または 1 時間以上先の場合、 タイムスタンプには時刻のかわりに年が入る。
リスト表示される各ディレクトリについて、ファイル表示の前に `total blocks ' という行を置く。ここで、 blocks はディレクトリ内の全てのファイルによって使用されるディスク容量の合計である。 デフォルトでは 1024 バイトブロックが用いられるが、 この値は上書きすることができる。 計算された blocks では、それぞれのハードリンクが別個に数えられている。 これはバグだという議論もある。
リスト表示されるアクセス権はシンボルモードの仕様と同じであるが、 ls は複数のビットを各アクセス権のセットの 3 文字目に組み入れている。
s
setuid ビットまたは setgid ビットが設定されていて、 さらに対応する実行ビットが設定されている場合。
S
setuid ビットまたは setgid ビットが設定されているが、 対応する実行ビットが設定されていない場合。
t
sticky ビットとその他のユーザーに対する実行ビットがともに設定されている場合。
T
sticky ビットは設定されているが、 その他のユーザーに対する実行ビットが設定されていない場合。
x
実行ビットは設定されているが、上のどれも適用されていない場合。
-
その他。
-m, --format=commas
ファイル名をコンマとスペースで区切って、 それぞれの行にできるだけ多く詰め込み、横にリスト表示する。
-n, --numeric-uid-gid
所有者のユーザ名・グループ名のかわりに数字の UID と GID をリスト表示する。
-o
長い形式でのディレクトリのリスト表示をするが、グループ情報は表示しない。 --format=long --no-group を用いるのと同じである。 このオプションは他のバージョンの ls との互換性のために提供された。
-p, --file-type, --indicator-style=file-type
ファイルタイプを示す文字を各ファイル名に加える。 -F と似ているが、実行可能ファイルにはマークしない。
-q, --hide-control-chars
ファイル名の中の非表示文字の代わりにクエスチョンマークを表示する。 出力が端末、プログラムが ls の場合のデフォルトである。
-r, --reverse
ディレクトリの中身を逆順にソートする。
-s, --size
それぞれのファイルのディスク割り当て量をファイル名の左に表示する。 これはファイルによって使用されるディスクの総量である。 この大きさは普通はファイルのサイズよりいくらか大きいが、 ファイルがホール (穴) を持っている場合は小さくなることもある。
各ファイルの割り当て量は 1024 バイトブロック単位でファイル名の左に表示される。 しかし、このブロックサイズは上書きされるかもしれない。
-t, --sort=time
アルファベット順ではなく修正時刻 (inode の `mtime') でソートする。 最も新しいファイルが最初にくる。
-u
修正時刻ではなく最終アクセス時刻 (inode の `atime') で ディレクトリの中身をソートする。 長いリスト表示形式が使われる場合、 修正時刻ではなく最終アクセス時刻が表示される。
-v, --sort=version
バージョン名とバージョン番号でソートする。 バージョンの一番低いものが最初にくる。 デフォルトのソートのように動作するが、10 進の数字のシーケンスは、 インデックス番号またはバージョン番号として数値的に扱われる。 ゼロを前にもつ数値部分は小数として扱われる。
   ls -1           ls -1v
bar-1.gz bar-1.gz
bar-100.gz bar-2.gz
bar-12.gz bar-12.gz
bar-2.gz bar-100.gz
foo-1.007.gz foo-1.007.gz
foo-1.012b.gz foo-1.01a.gz
foo-1.01a.gz foo-1.012b.gz


-w, --width cols
スクリーンの幅を cols 文字と仮定する。 可能ならばターミナルドライバからデフォルトの値を採用する。 それが不可能な場合には、環境変数 COLUMNS が設定されていればその値を使う。 設定されていない場合のデフォルトは 80 文字である。
-x, --format=across, --format=horizontal
ファイルを複数列でリスト表示する。水平方向にソートする。
-A, --almost-all
ディレクトリ内の `.' と `..' 以外のすべてのファイルをリスト表示する。
-B, --ignore-backups
コマンドラインで指定した場合を除いて、`~' で終わるファイルをリスト表示しない。
-C, --format=vertical
ファイルを複数列でリスト表示する。垂直方向にソートする。 標準出力が端末のときのデフォルトである。 dir と d ではこのオプションが常にデフォルトになっている。 最も少ない行でなるべく多くのファイルを表示するため GNU ls は可変幅の列を使う。
-D, --dired
長いリスト表示 ( -l ) と一緒に使われた場合、メインの出力の後に以下のような追加の行を表示する:
   //DIRED//
   BEG1 END1 BEG2 END2 ...

BEGn と ENDn は符号なし整数で、リスト出力における 各ファイル名の始めと終わりのバイト位置を記録したものである。 このオプションを使うと、 ファイル名にスペースや改行といった普段使わない文字が含まれている場合でも、 Emacs でファイル名を探すのが (ファンシー検索 (fancy searching) を使わ なくても) 簡単になる。
ディレクトリが再帰的にリスト表示される ( -R オプションの) 場合、各サブディレクトリの後に以下ような行を出力する:
   //SUBDIRED//
   BEG1 END1 ...

最後に、以下のような行を出力する。
   //DIRED-OPTIONS// --quoting-style=WORD

ここで WORD はクォートのスタイルである。
-F, --classify
--indicator-style=classify と同じ。
-G, --no-group
長い形式でのディレクトリのリスト表示の場合に、グループ情報の表示をさせない。
-H, --si
それぞれのサイズについて、 例えばメガバイトなら M といったサイズ文字を付加する (SIとは国際単位系のことで、これらの文字を接頭辞と定義している)。 2 の累乗ではなく 10 の累乗を用いるので、 M は 1,000,000 バイトを表す。 2 の累乗にしたいときは -h または --human-readable オプションを使うこと。
-I, --ignore= pattern
コマンドラインで与えられない限り、 シェルパターン pattern (注:正規表現とは異なる) にマッチする名前のファイルはリスト表示しない。 シェルと同様に、ファイル名の先頭にある `.' は pattern の始めにあるワイルドカードにはマッチしない。 たとえば、
lightside:~% ls --ignore='.??*' --ignore='.[^.]' \
--ignore='#*'

では、 1 つ目のオプションが `.' で始まる 3 文字以上の長さの名前を リストから除外する。 また、2 つ目のオプションが `..' 以外の `.' で始まる 2 文字の名前を除外する。 さらに、3 つ目のオプションが `#' で始まる名前をリストから除外する。
-L, --dereference
シンボリックリンクそのものではなく、 参照しているファイルの情報をリスト表示する。
-N, --literal
ファイル名中の非表示文字の変換を行わない。
-Q, --quote-name, --quoting-style=c
ファイル名をダブルクォートで囲む。 さらに、非表示文字を C 言語で使われている形式に変換して表示する。
-R, --recursive
すべてのディレクトリの中身を再帰的にリスト表示する。
-S, --sort=size
アルファベット順でなく、ファイルサイズでディレクトリの中身をソートする。 最も大きいファイルが最初に表示される。
-T, --tabsize cols
タブストップの幅を cols 文字分と仮定する。デフォルトは 8 文字分。 ls は効率をよくするために出力中の可能な場所でタブを使う。 cols がゼロの場合、タブをまったく使わない。
-U, --sort=none
ディレクトリの中身をソートせず、ディスク上にある順番にリスト表示する ( -U と -f の違いは、-f オプションが他のオプションを 有効にしたり無効にしたりする点にある)。 非常に大きなディレクトリをリスト表示する場合、 このオプションは特に有用である。 なぜなら、ソートをしないことにより著しく速くできるからである。
-X, --sort=extension
ディレクトリの中身をファイル拡張子 (最後の `.' の後につづく文字列) の アルファベット順にソートする。 拡張子のないファイルは最初にソートされる。
--block-size=SIZE
環境変数の値を上書きして、ブロックサイズを SIZE に設定する。
--color[= when ]
ファイルタイプを区別するための色づけの有無を指定する。 色は環境変数 LS_COLORS を用いて指定される。 この変数の設定法についての情報は dircolors (1) を参照すること。 when は省略できる。 以下のいずれか 1 つを指定することもできる:
none
まったく色づけしない。これがデフォルトである。
auto
標準出力が端末の場合のみ色づけする。
always
常に色づけする。 --color を指定して when に何にも指定しないのは --color=always と等しい。
--full-time
時刻に関する情報を標準の省略形式ではなく完全な形式でリスト表示する。 時刻の表示形式は date (1) のデフォルトと同じ。この形式は変更できないが、 時刻の文字列を cut (1) で取り出し、結果を `date -d' に渡すことができる。
時刻の出力に秒単位の情報を含んでいるので、このオプションはとても有用である。 (Unix ファイルシステムは、 四捨五入した秒単位までのタイムスタンプしか持たないので、 このオプションはタイムスタンプにあるすべての情報を表示する。) 例えば、Makefile でファイルを正しく再生成してくれない場合に このオプションが役立つ。
--indicator-style=WORD
各ファイル名にファイルタイプを示す文字を付加する。 付加される文字は WORD に依存する:
none
ファイルタイプを示す文字を付加しない。これがデフォルトの動作である。
file-type
ディレクトリに `/' を、シンボリックリンクに `@' を、 FIFO に `|' を、ソケットに `=' を付加する。 通常のファイルには何もつけない。 -p と --file-type に等しい。
classify
file-type と同じであるが、 さらに実行可能ファイルには `*' をつける。 -F と --classify に等しい。
--quoting-style\=WORD
出力されるファイル名をクォートするために、 WORD で指示されるスタイルを使用する。 WORD は次のいずれかでなければならない:
literal
ファイル名をそのまま出力する。これがデフォルトの動作であるが、 将来のバージョンでは shell がデフォルトになるかもしれない。
shell
ファイル名がシェルのメタキャラクタを含む場合や、 シェルによくわからない出力を引き起こさせるかもしれない場合には、 ファイル名をクォートする。
shell-always
通常はクォートを必要としないファイル名に対しても、クォートを行う。
c
C 言語における文字列の形式でファイル名をクォートする。 -Q と --quote-name に等しい。
escape
c と同じであるが、ファイル名を囲むダブルクォート文字を省略する。 -b と --escape に等しい。
locale
c 形式と似ているが、 このように 適切なロケール固有のクォートシンボルを使う。
clocale
c 形式と似ているが、 `このように' 適切なロケール固有のクォートシンボルを使う。 --quoting-style オプションのデフォルトの値は 環境変数 QUOTING_STYLE で指定することができる。
--show-control-chars
ファイル名の中の非表示文字をそのまま出力する。 出力が端末でないか、プログラムが ls でない場合はデフォルトである。
--time=atime, --time=access
--sort=time または -t と一緒に使われると、 -u (atime でソートする) と等しくなる。 普通に時刻を表示するオプションと一緒に使われると、 各ファイルの最終修正時刻ではなく最終アクセス時刻を表示する。
--time=ctime, --time=status, --time=use
--sort=time または -t と一緒に使われると、 -c (ctime でソートする) と等しくなる。 普通に時刻を表示するオプションと一緒に使われると、 各ファイルの最終修正時刻ではなく inode の最終変更時刻を表示する。
--help
標準出力に使用方法のメッセージを出力して正常終了する。
--version
標準出力にバージョン情報を出力して正常終了する。
--
オプションリストの終りを示す。
デフォルトの出力ファイルブロックサイズは 1024 バイト (POSIXLY_CORRECT が設定されているときは 512 バイト) である。 この値は以下の環境変数のどれかを設定することで変更できる。 また、これらの環境変数の値は --block-size=SIZE が オプションに与えられると無視される。
優先順位:
LS_BLOCK_SIZE , BLOCK_SIZE , POSIXLY_CORRECT . これらの変数の値は、数字でも human-readable でも si でもよい。 数字の後には、何倍であるかを指定するサイズ文字と、 通常のバイトを選択する B または 10 進の「商業用」バイトを選択する D を続けてもよい。 たとえば、`BLOCK_SIZE=1KB' は `BLOCK_SIZE=1024' に等しく、 `BLOCK_SIZE=1KD' は `BLOCK_SIZE=1000' に等しい。
以下の文字が認識される (また --human-readable と --si オプションで表示されるときに用いられる)
k
キロ: --human-readable なら 2^10 = 1024、 --si なら 10^3 = 1000
M
メガ: 2^20 = 1,048,576 または 10^6 = 1,000,000
G
ギガ: 2^30 = 1,073,741,824 または 10^9 = 1,000,000,000
T
テラ: 2^40 = 1,099,511,627,776 または 10^12 = 1,000,000,000,000
P
ペタ: 2^50 = 1,125,899,906,842,624 または 10^15 = 1,000,000,000,000,000
E
エクサ: 2^60 = 1,152,921,504,606,846,976 または 10^18 = 1,000,000,000,000,000,000
Z
ゼタ: 2^70 = 1,180,591,620,717,411,303,424 または 10^21 = 1,000,000,000,000,000,000,000
Y
ヨタ: 2^80 = 1,208,925,819,614,629,174,706,176 または 10^24 = 1,000,000,000,000,000,000,000,000
変数 LS_BLOCK_SIZE, BLOCK_SIZE, POSIXLY_CORRECT は 出力ファイルブロックサイズの選択を決定する。 変数 COLUMNS は (10 進の整数表現を含んでいる場合)、 (-C オプションで使われる) 出力の列の幅を決定する。 ファイル名は複数列での出力にあわせるために短くされたりはしない。 変数 QUOTING_STYLE は出力のクォートのスタイルを決定する。 変数 LS_COLORS は使用される色を指定するために使われる。 変数 LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_TIME が通常の意味を持つ。 変数 TZ は ls によって書き出される時刻の文字列のためのタイムゾーンを与える。
BSD システムでは、HP-UX システムから NFS マウントしたファイルに対して、 -s オプションでは正しい値の半分の値を表示してしまう。 HP-UX システムでは、BSD システムから NFS マウントしたファイルに対して、 ls は正しい値の 2 倍の値を表示してしまう。 これは HP-UX の欠陥によるもので、HP-UX の ls プログラムにも影響を及ぼしている。
POSIX 1003.2
このページは fileutils-4.1 パッケージの ls コマンドについて説明したものである; その他のバージョンでは少し違いがあるかもしれない。 修正や追加は aeb@cwi.nl, aw@mail1.bet1.puv.fi, ragnar@ragnar-hojland.com 宛にメールで連絡してください。 プログラムのバグについては bug-fileutils@gnu.org へ報告してください。