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または= | 名前つきパイプまたはFIFO |
s | ソケット |
残りの部分は3文字ごとのブロックに分けられ、r、w、xはそれぞれ読み込み、書き込み、実行の権限が存在することを意味する。最初のブロックは所有ユーザの、2つめのブロックは所属しているグループの、3つめのブロックはその他の場合のパーミッションを表している。上の例では、ユーザfredはedition-32を読み書きできるが、実行はできない。editorsグループのメンバーはそれ以外のユーザと同様、edition-32を読めるが、書き込んだり実行したりすることはできない。 詳しくはファイルパーミッションを参照のこと。