lsコマンドは、PATH
に指定したディレクトリ内のディレクトリやファイルの情報を一覧表示します。PATH
にファイル名を指定すると、そのファイルの情報を表示します。また、オプションを指定することにより、表示内容や表示形式を変えることができます。
- ① -l
- アクセス権、リンク数、所有者名、グループ名、サイズ、最終更新日時、名前を1エントリにつき1行で表示します。ロング形式ともいいます。
- ② -a
- ファイル名が「.」(ピリオド)から始まるファイルはドットファイル(または隠しファイル)と呼ばれ、通常lsコマンドでは表示されません。ドットファイルも含めて、すべてのファイル、ディレクトリを表示する場合に、このオプションを指定します。
- ③ -A
- オプション「-a」オプションとほぼ同じですが、特殊な形式である、「.」(カレントディレクトリ)と「..」(親ディレクトリ)を表示しません。
- ④ -F
- エントリ名の後に種別を表す文字を表示します。ディレクトリを表す「/」、シンボリックリンクを表す「@」、実行可能形式ファイルを表す「*」などがあります。
- ⑤ -R
- サブディレクトリの内容も表示します。
- ⑥ -u
- オプション「-l」といっしょに指定して、最終更新日時の代わりに最終アクセス日時を表示します。
- ⑦ -t
- 最終更新日時が最近のものから順に並び替えて表示します。
- ⑧ -r
- エントリ名をキーに降順に並び替えて表示します。
- ⑨ -d
PATH
にディレクトリを指定した場合、ディレクトリ内ではなく、その指定したディレクトリの情報を表示します。
エントリとは、ファイルやディレクトリなどlsコマンドの構成要素となるものを総称して使います。エントリ名という場合は、ファイル名やディレクトリ名を指します
コマンドやアプリケーションなど実行することができるバイナリファイルのことを実行可能形式ファイルといいます。ただし実行するには、実行権限が必要です。
- ① PATH
- リストを表示するディレクトリまたはファイルへのパスを指定します。ワイルドカードによる指定も可能です。省略した場合は、カレントディレクトリの内容を表示します。
$ ls
dir01 dir02 dir03 file01 file02 file03 file11PATH
を省略
$
$ ls -a
. .. .dotfile dir01 dir02 dir03 file01 file02 file03 file11
$
$ ls -A
.dotfile dir01 dir02 dir03 file01 file02 file03 file11
$
$ ls -F
dir01/ dir02/ dir03/ file01* file02 file03 file11@
「dir01」「dir02」「dir03」がディレクトリ、「file01」が実行可能形式ファイル、「file11」がシンボリックリンク、その他が通常ファイル$
$ ls -R
.dotfile dir01 dir02 dir03 file01 file02 file03 file11
.:
dir01 dir02 dir03 file01 file02 file03 file11
./dir01:
file11 file12
./dir02:
file21 file22 file23
./dir03:
file31 file32 file33 file34
サブディレクトリ「dir01」「dir02」「dir03」の内容$
オプション「-R」を指定してサブディレクトリの内容を表示することができますが、慣れないと階層構造がわかりにくいかも知れません。同様にサブディレクトリの内容まで表示するtreeコマンドを使用すると、階層構造をわかりやすく表示できます。treeコマンドを実行すると、階層構造を次のように表示します。
$ tree dir02
dir02
|-- dir01
| |-- file11
| `-- file12
|-- dir02
| |-- file21
| |-- file22
| `-- file23
|-- file01
|-- file02
`-- file03
$ ls -l
合計24
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir02
drwxrwxr-x 2 cmd cmd 4096 4月11 15:14 dir03
-rwxrwxrwx 1 cmd cmd 25 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file02
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file03
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
$ ls -lu
合計24
drwxrwxr-x 2 cmd cmd 4096 4月11 15:39 dir01
drwxrwxr-x 2 cmd cmd 4096 4月11 15:39 dir02
drwxrwxr-x 2 cmd cmd 4096 4月11 15:39 dir03
-rwxrwxrwx 1 cmd cmd 25 4月11 15:13 file01
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file02
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file03
lrwxrwxrwx 1 cmd cmd 12 4月11 15:39 file11 -> dir01/file11
$
$ ls -lt
合計24
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
drwxrwxr-x 2 cmd cmd 4096 4月11 15:14 dir03
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir02
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file03
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file02
-rwxrwxrwx 1 cmd cmd 25 4月11 15:13 file01
$
$ ls -lr
合計24
lrwxrwxrwx 1 cmd cmd 12 4月11 15:23 file11 -> dir01/file11
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file03
-rw-rw-r-- 1 cmd cmd 32 4月11 15:13 file02
-rwxrwxrwx 1 cmd cmd 25 4月11 15:13 file01
drwxrwxr-x 2 cmd cmd 4096 4月11 15:14 dir03
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir02
drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
$
$ ls -l dir01
ディレクトリの内容を表示合計8
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file11
-rw-rw-r-- 1 cmd cmd 39 4月11 15:13 file12
$ ls -ld dir01
ディレクトリの情報を表示drwxrwxr-x 2 cmd cmd 4096 4月11 15:13 dir01
$
筆者はUNIX崇拝者でもなければアンチWindowsユーザでもありません。現在は、仕事でも家でもWindowsマシンとUNIXマシンを半々ぐらい使っています。それぞれに良い所と悪い所があるわけですから、それぞれのOSのいいとこ取りができればよいと考えています。理想をいいますなら、お互いのOSがデータやプログラムなどネットワークを通じていつでもどこでも利用できるような環境があればもっとコンピュータの世界が広がるに違いありません。筆者が現在思っていることのひとつに、lsコマンドによって日本語文字ファイル名を、EUCやSJISといった文字コードで自動で認識して表示できるようにならないかということです。Windows側から格納されたデータとUNIXで作成したデータが同じ所にあって、相方のOSから編集できたら、と思うのです。よく知人に「それなら日本語ファイル名なんて使わなければよい」といわれますが、これは後ろ向きな考え方であると思います。どうすれば今できないことができるようになるのか、それを考え続けて行けばもっとすばらしいOSへと変わっていくでしょうから。
本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.