Ls (UNIX)

ls（エルエス）はPOSIXおよびSingle UNIX Specificationで規定されているコマンドである。ファイルの一覧を表示するコマンドである。

 歴史 
lsはAT&T UNIXの最初のバージョンから存在していた。その名称は、Multicsに存在した類似のコマンドから継承された。現在使われている主な実装には、フリーソフトウェア財団によるものとFreeBSD、OpenBSD、NetBSD、DarwinなどのBSD系システムで用いられているものの2つがある。どちらも自由ソフトウェアであり、オープンソースである。

 振る舞い 
Unix系のシステムには、現在ユーザが作業を行っているファイルシステム上の場所を表す「カレントディレクトリ」という概念がある。lsは引数を伴わずに起動された場合、カレントディレクトリのファイルの一覧を表示する。引数にカレントディレクトリ以外のディレクトリを指定した場合、そのディレクトリのファイル一覧を表示する。また、ディレクトリやファイルのリストを引数として指定することもでき、その場合はすべての指定されたファイルと、ディレクトリ内のファイルの一覧を表示する。

そのディレクトリ自身を示す「.」や親ディレクトリの「..」をはじめ、各種設定ファイル等のファイル名の慣例である「.」で始まるファイル名をもつファイル（ドットファイル）は標準では表示されず、表示するには明示的に-aオプションを指定する必要がある。

オプションが指定されなかった場合、lsはファイル名のみを表示する。しかし、この形式ではファイルタイプ、パーミッション、サイズなどの情報がわからない。lsには表示形式を変更するオプションが多く存在するが、もっとも一般的なものは次に挙げたものである。

 -l :長い形式で表示する。ファイルタイプ、パーミッション、ハードリンクの数、所有者、グループ、サイズ、日付、ファイル名。
 -F :ファイルの性質を表す文字をファイル名の末尾に付加する。例えば「*」は実行可能ファイル、「/」はディレクトリを表し、通常のファイルは何も付加されない。
 -a :「.」で始まるファイル名のものを含め、ディレクトリ内のすべてのファイルを表示する。
 -R :サブディレクトリ内のファイルを再帰的に表示する。従って、ls -R /とするとシステムに存在するすべてのファイルを表示する。
一部の環境では、--color（GNU ls）または-G（FreeBSD ls）オプションを指定するとファイルタイプによって異なる色で表示される。表示する色を決定する際、FreeBSDのlsではファイルタイプとパーミッションのみで決定されるが、GNUのlsではそれに加え拡張子によっても色を変えることができる。

このようなオプションを指定した場合、lsの出力は次のようになる。
  brw-r--r--    1 unixguy staff 64,  64 Jan 27 05:52 block         
  crw-r--r--    1 unixguy staff 64, 255 Jan 26 13:57 character     
  -rw-r--r--    1 unixguy staff     290 Jan 26 14:08 compressed.gz 
  -rw-r--r--    1 unixguy staff  331836 Jan 26 14:06 data.ppm      
  drwxrwx--x    2 unixguy staff      48 Jan 26 11:28 dir           
  -rwxrwx--x    1 unixguy staff      29 Jan 26 14:03 executable    
  prw-r--r--    1 unixguy staff       0 Jan 26 11:50 fifo          
  lrwxrwxrwx    1 unixguy staff       3 Jan 26 11:44 link -> dir   
  -rw-rw----    1 unixguy staff     217 Jan 26 14:08 regularfile   
lsには他にも多くのオプションが存在し、それらはmanページで調べることができる。

 使用例 
次の例は2つの異なる引数を与えられた時のlsコマンドの出力の違いを示している。
 $ pwd
 /home/fred
 $ ls -l
 drwxr--r--   1 fred  editors   4096  drafts
 -rw-r--r--   1 fred  editors  30405  edition-32
 -r-xr-xr-x   1 fred  fred      8460  edit
 $ ls -F
 drafts/ 
 edition-32 
 edit*
ここでユーザfredのホームディレクトリにはdraftsというディレクトリ、edition-32という通常のファイル、editという実行可能ファイルが存在することがわかる。lsはユーザ、グループ、世界（それ以外）がファイルに対しどのようなパーミッション（権限）を持っているかを表現するために特別な記法を使っている。

パーミッション部分の最初の文字はファイルの種別を表している。
文字意味-通常のファイルbブロックデバイスcキャラクタデバイスdディレクトリlシンボリックリンクpまたは=名前つきパイプまたはFIFOsソケット
残りの部分は3文字ごとのブロックに分けられ、r、w、xはそれぞれ読み込み、書き込み、実行の権限が存在することを意味する。最初のブロックは所有ユーザの、2つめのブロックは所属しているグループの、3つめのブロックはその他の場合のパーミッションを表している。上の例では、ユーザfredはedition-32を読み書きできるが、実行はできない。editorsグループのメンバーはそれ以外のユーザと同様、edition-32を読めるが、書き込んだり実行したりすることはできない。
詳しくはファイルパーミッションを参照のこと。

 関連項目 
 sl (UNIX)

 外部リンク 

 ls ドキュメント（GNUプロジェクト版、英語）

Category:標準UNIXプログラム
Category:1969年のソフトウェア