連載
» 2016年07月14日 05時00分 公開

Windows→Linuxクロスレファレンス:Windowsの「dir」はLinuxの「ls」コマンド――ファイル一覧表示 (2/2)

[打越浩幸,デジタルアドバンテージ]
前のページへ 1|2       

色分けされるはエイリアスで「--colors=auto」オプションが使われているから

 lsコマンドの出力にはデフォルトでは色が付いている。これは、ファイルやフォルダ、特殊ファイル、ファイルタイプなどを簡単に判別できるようにするためである。具体的には種類に応じて次のような色分けが利用されている。

意味
(通常色) 通常のファイルやディレクトリ
ディレクトリ
水色 シンボリックリンク
実行ファイル
黄色 デバイスやパイプ
マゼンタ ソケット
lsコマンド出力の色分け(主要なもののみ)

 何に対してどのような色を付けるかの設定は、dircolorsコマンド(および「man dir_colors」コマンド)で確認できる。

 lsコマンドの結果が色付きで表示されているのは、「--colors=auto」オプションが指定されているからである。いや、そんなオプションを指定した覚えはない、と思うかもしれないが、インストールしたばかりで何もカスタマイズしていない環境では通常、「エイリアス(alias)」によってこのオプションが自動的に付加されている。

 エイリアスとは、コマンドの「別名」を定義する機能であり(Windowsのコマンドプロンプトで言えば、doskeyコマンドの機能に近いが、これはかなり劣る)、「alias」コマンドを実行すると現在定義されているエイリアスの一覧を確認できる。

コマンドのエイリアス コマンドのエイリアス
よく使うコマンドやオプション、設定などがあれば、エイリアスとして定義しておくと簡単に実行できる。
  (1)引数なしでaliasを実行すると、現在定義されているエイリアスの一覧が表示される。これはデフォルトで定義されているエイリアスの一覧。ユーザーごとのエイリアスは、.bashrcファイルで定義されているので、自分で追加してもよい。
  (2)lsのエイリアスだけを表示させたところ。

 このエイリアスの定義を見ると、「ls」に対して「ls --color=auto」が定義されていることが分かる。これにより、ユーザーが例えば「ls *.txt」と入力すると、それは実際には「ls --color=auto *.txt」のように展開されて実行されることになる(エイリアス中に別のエイリアスを含むことも可能)。

 上の例ではlsをベースにした、オプションの異なるエイリアスが全部で4つ定義されているので(「l」「la」「ll」「ls」の4つ)、目的に応じて使い分けるとよい。

 エイリアスを使わずに実行したければ、コマンドの先頭に「\」(フォントによっては半角の「¥」マークではなく、逆スラッシュ記号「\」として表示されることもあるが、機能的には同じである)を付けて実行する。こうすると、エイリアスとして展開されなくなる(エイリアスやシェルのコマンドライン編集機能などについては今後解説予定)。

エイリアスの無効化 エイリアスの無効化
エイリアスを無視して実行することもできる。不要なエイリアスならunaliasコマンドで削除してもよいし(ただしこれだと次回のbash起動時にまた読み込まれる)、.bashrcから削除してもよい。
  (1)通常のlsコマンドの実行。エイリアスがあるので、結果はカラーで表示される。
  (2)先頭に「\」を付けると、エイリアスを使わずにコマンドが実行される。色が付いていない。

 なお、「--color=auto」オプションを指定すると、「端末」アプリケーションやシェル上でインタラクティブにlsコマンドを実行している場合にのみ、lsの結果が色付きで表示される。lsの出力をファイルにリダイレクトしたり、パイプで別のコマンドに接続したりしていると、ただのテキスト文字として出力される。常に色情報を有効にしたければ「--colors=always」、常に無効にしたければ「--colors=never」のように指定する。

マルチコラム表示のオン/オフ

 lsの出力は、何もオプションを指定しないと、名前だけを複数横に並べたマルチカラム表示になる。だがコマンドの出力をリダイレクトしてファイルに保存したり、パイプで別のコマンドに接続したりすれば自動的に縦1列だけの表示になる。これを強制的に制御するには、次のオプションを指定する。

オプション 意味
-C マルチカラム表示の場合に、名前を横にソートする(-x)のではなく、縦にソートする。コンソール表示の場合のデフォルト
-x マルチカラム表示の場合に、名前を縦にソートする(-C)のではなく、横にソートする
-1 シングルカラム表示にする。パイプやリダイレクト使用時のデフォルト。Windowsの「dir /b」に相当
表示形式の変更オプション

 以下に実行例を示す。

lsのマルチカラム表示 lsのマルチカラム表示
マルチカラム表示時の順序はオプションで変更できる。
  (1)オプションなし。縦方向のマルチカラム表示。
  (2)(1)は-Cと同じ。
  (3)横方向のマルチカラム表示。
  (4)データを再利用(コピー&ペースト)するなら、シングルカラム表示の方が便利だろう。

ディレクトリの展開の抑止

 lsでカレントディレクトリ中の全ファイルではなく、指定したファイルやディレクトリの一覧だけを取得したい場合は、lsに続けて該当するファイル名やディレクトリ名、およびワイルドカード指定のファイル名などを列挙すればよい。ワイルドカード表記とパス区切りを組み合わせて、複数の階層にある多数のファイルを同時にまとめて列挙することもできる(Windowsのdirコマンドでは、このような指定はできない)。

引数付きのlsコマンドの例 引数付きのlsコマンドの例
lsの引数にファイルやディレクトリ名、ワイルドカード文字列などを列挙すると、それらの情報が一覧表示される。
  (1)特定のパターンに合致するファイル名のみを表示させる。
  (2)詳細形式で表示させる。
  (3)Windowsのdirコマンドと違って、パス階層の途中にワイルドカード指定を利用できるなど、自由度は高い。ちなみに、このパスはbash自身が展開しているため、すべてのコマンドの引数でこのような指定が可能。

 だが指定したパス名(のリスト)の中にディレクトリが含まれている場合は、その内容まで自動的に展開されてしまう。例えば「ls /bin」とすると、「/bin」ディレクトリの情報ではなく、「/bin/」中にある「*」に該当するファイルやディレクトリの情報が一覧表示される。この自動的な展開を抑止するには「-d」オプションを指定する。

ディレクトリの展開の抑制 ディレクトリの展開の抑制
lsコマンドの引数にディレクトリ名があると、通常はそのディレクトリの中の一覧が表示される。これを抑制するには-dオプションを指定する。
  (1)ルートディレクトリの確認。
  (2)-dオプション付きで「ls /bin」を実行したところ。/binの情報が表示されている。
  (3)-dオプションなしで実行すると、/binの中にあるファイルの一覧が表示される。

結果をソートするオプション

 lsの出力は、デフォルトでは名前のアルファベット順にソートされて出力されているが、Windowsの「dir /o」のように、順序を変更するオプションが幾つかある。

オプション 意味
-t 更新日時順にする(新しいファイルが前)
-S ファイルサイズ順にする
-X 拡張子のアルファベット順にする
-u -lや-tと併用した場合に、更新日時ではなくアクセス日時を使用する
-r ソート順序を逆にする。他のオプションと併用すること
結果のソートに関するオプション(主要なもののみ)

ディレクトリを再帰的にたどる「-R」オプション

 Windowsの「dir /S」のように、カレントディレクトリもしくは指定したディレクトリ以下を全てたどるには、「-R」オプションを指定する。ちなみにオプションの大文字小文字は区別されるため、「-r」と「-R」は異なるオプションとして扱われる。

ファイルの「クラス分け」を表示する「-F」オプション

 「-F」オプションを使用すると、名前の末尾に「*」や「@」などの文字が付加され、ファイルの種類が簡単に分かるようになる。

付加文字 意味
付加文字
* 実行許可属性(x)の付いたファイル
/ ディレクトリ
@ シンボリックリンク
ファイルのクラス分け(主要なもののみ)

 以下に実行例を示す。

ファイル名のクラス分け表示 ファイル名のクラス分け表示
ーFオプションを指定すると、ファイルの種類ごとに「*」や「@」などの文字が末尾に表示され、ファイルのタイプがすぐ分かるようになる。
  (1)オプションなしでlsを実行する。ファイル名は色分けされているが、名前しか表示されてない。
  (2)-Fを指定すると、名前の末尾に「*」や「@」「/」などが追加される。昔のlsはこの機能しか持っていなかった。色分けが使えない状況では、この方法でもよいだろう。
  (3)詳細表示と併用した例。


 以上、簡単にlsコマンドの使い方を解説した。lsコマンドのオプション一覧や、より詳細な使い方については以下の記事も参照していただきたい。

 lsコマンドに限った話ではないが、長い間使われてきただけあってLinuxやUNIXのコマンドには非常に多くのオプションが実装されている。コマンドを実際に動かしたり、ヘルプやmanコマンドなどを大いに参考にして、十分活用していただきたい。

「Windows→Linuxクロスレファレンス」のインデックス

Windows→Linuxクロスレファレンス

前のページへ 1|2       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。