【 ls 】コマンド(カラー出力編)――ファイルの種類別に色を付けて表示するLinux基本コマンドTips(27)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。前回に続き、今回も「ls」コマンドを取り上げます。

» 2016年06月28日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルのリストを表示する「ls」コマンドの「カラー出力編」です。

lsコマンドとは?

 「ls」はファイルを一覧表示する他、ファイルの詳細情報を表示する際にも使えるコマンドです。

 「ls ディレクトリ名」でディレクトリ内にあるファイルの一覧を、「ls」のみで実行した場合はカレントディレクトリ内にあるファイルの一覧を表示します。また、「ls file*.txt」のように、ワイルドカードで指定することもあります。


lsコマンドの書式

ls [オプション] [ファイルまたはディレクトリ……]

※[ ]は省略可能な引数を示しています



lsコマンドの主なオプション

 lsコマンドの主なオプションは次の通りです。

●表示フォーマット関係
短いオプション 長いオプション 意味
-l 長いフォーマットで表示する。ディレクトリを指定した場合、最初にトータルのブロック数を表示してからディレクトリ内のファイルの情報を表示する
-o 「-l」と同じだが、グループ情報は表示しない
-g 「-l」と同じだが、ファイル所有者を表示しない
-n --numeric-uid-gid 「-l」と同じだが、所有者とグループ名の代わりにUIDとGIDを数値で表示する
--full-time 「-l」と同じだが、完全な日時を表示する(「-l --time-style=full-iso」と同じ)
-G --no-group 「-l」と併用したとき、グループ名を表示しない
--author 「-l」と併用したとき、各ファイルの作成者を表示する

●サイズ関係
短いオプション 長いオプション 意味
-h --human-readable 「-l」と併用したとき、サイズを人が読みやすい形式で表示する(例:1K、234M、2G)
--si 「-h」と同じだが、乗数の単位として1024の代わりに1000を使用する
-k 「-l」と併用したとき、サイズを1KB単位(1024バイトの倍数)で表示する
--block-size=SIZE 「-l」と併用したとき、サイズを「SIZE」の倍数として表示する。SIZEは1024単位のK、M、G……および1000単位のKB、MB、GB……などが使用可能。例えば、「--block-size=M」とすると1M単位(1,048,576の倍数)で表示

●時刻関係
短いオプション 長いオプション 意味
-c 「-l」と併用したとき、更新日の代わりに「ctime」(ファイルの属性など変更した時刻)を表示する
-u 「-l」と併用したとき、更新日の代わりに最終アクセス日を表示する
--time=WORD 「-l」と併用し、ファイル更新時刻の代わりに「WORD」で指定した時間を表示する(WORDが「atime」の場合は「-u」相当、「access」の場合は「-u」相当、「use」の場合は「-u」相当、「ctime」「status」の場合は「-c」相当)
--time-style=STYLE 「-l」と併用し、「STYLE」で指定した形式で時間を表示する(STYLEは「full-iso」「long-iso」「iso」「locale」「FORMAT」が指定可能。FORMATは「date」コマンドと同様に指定)

●タイプ識別子関係
短いオプション 長いオプション 意味
-F --classify 名前の後にタイプ識別子(*/=>@|のいずれか)を付けて出力する(第26回「ファイルの種類が分かるように一覧表示する」参照
--file-type 「-F」と同じだが、実行ファイルを表す「*」は付けない
-p --indicator-style=slash ディレクトリの場合のみ「/」を付けて表示する

●その他の情報
短いオプション 長いオプション 意味
-i --inode 各ファイルの前にファイルの「iノード番号」(ファイルを管理するのに使われている数値)を表示する
-s --size 各ファイルの前にファイルのブロック数を表示する
-Z --context 各ファイルのSELinuxセキュリティコンテキストを表示する

●出力フォーマット
短いオプション 長いオプション 意味
-C リストを常に複数の列で出力する(リダイレクトやパイプで画面以外に出力した場合も画面表示と同じように複数の列で出力する:第26回「常に1行で/常に複数行で表示する」参照
-1 リストを常に1件1行で表示する(画面表示の際もリダイレクトやパイプで画面以外へ出力した場合と同じように1行1件で表示する)
-m ファイル名のリストをカンマで区切って表示する
-x 複数列の表示でファイル名を列方向ではなく行方向(縦方向)に並べる
-T 数 --tabsize=文字数 タブ幅を8の代わりに指定した文字数にする
-w 数 --width=文字数 スクリーン幅を指定した文字数にする
--format=WORD 表示スタイルをWORDで指定(例:「--format=long」で「-l」相当。WORDが「across」「horizontal」の場合は「-x」相当、「commas」の場合は「-m」相当、「long」「verbose」の場合は「-l」相当、「single-column」の場合は「-1」相当、「vertical」の場合は「-C」相当)
-Q --quote-name ファイル名をダブルクオート(")で囲む
--quoting-style=WORD ファイル名のクオートをWORDで指定された形式で行う(WORDには「literal」「locale」「shell」「shell-always」「c」「escape」を指定)
--color[=WHEN] カラーで出力する。WHENには「always」「never」「auto」を指定(デフォルトはautoで、出力先が端末の時だけカラーで出力する)、色の設定は環境変数「LS_COLORS」で行う
-N --literal 生の要素名を表示する(制御文字などを特別扱いしない)
-q --hide-control-chars 表示不可能な文字を「?」に置き換える
--show-control-chars 表示不可能な文字をそのまま表示する(出力が端末ではない場合のデフォルト)

●並べ替え関係のオプション
短いオプション 長いオプション 意味
-t ファイルの更新日が新しい順に表示する(「-lc」が併せて指定されている場合は「ctime」順、「-lu」が併せて指定されている場合は最終アクセス日順で表示)
-S ファイルサイズの大きい順に並べる
--group-directories-first 先にディレクトリの一覧を表示してからファイルを一覧表示する(「--sort=none」「-U」と併用した場合は無効)
--sort=WORD 名前順の代わりに「WORD」で指定した順で並べ替える(例:「--sort=time」で更新日順。WORDが「none」は「-U」相当、「extension」は「-X」相当、「size」は「-S」相当、「time」は「-t」相当、「version」は「-v」相当)
-v 自然な数字(version)順でソートする
-X 拡張子のアルファベット順にソートする
-r --reverse 並び順を反転させる
-U ファイルを並べ替えず、ディレクトリに含まれている要素順で表示する
-f ファイルを並べ替えず、ディレクトリ情報のままで表示する(「-aU」が有効になり、「--color」が無効になる)

●表示対象関係のオプション
短いオプション 長いオプション 意味
-a --all ドットファイルも表示する
-A --almost-all ドットファイルも表示する、ただし「.」と「..」を除く
-B --ignore-backups 「~」で終了する要素を一覧表示しない
--ignore=PATTERN シェル形式の「PATTERN」(「D*」や「file[1-3].txt」など)に一致する要素は表示しない
--hide=PATTERN シェル形式の「PATTERN」に一致する要素は表示しない(「-a」または「-A」で上書きされるため「--hide=".b*"」のような指定は無効)
-d --directory ディレクトリの内容ではなく、ディレクトリそのものの情報を表示する(シンボリックリンクもたどらない)
-H --dereference-command-line コマンドラインで指定したファイルやディレクトリがシンボリックリンクの場合は、リンク先の情報で表示(「-F」「-d」「-l」と一緒に使う。例えば、「/bin」が「/usr/bin」へのシンボリックリンクの場合、「ls -l /bin」ではシンボリックリンクの情報が表示されるが、「ls -lH /etc」では「ls -l /usr/bin」と同じ結果になる)
--dereference-command-line-symlink-to-dir コマンド行のシンボリックリンクがディレクトリを指している場合には、シンボリックリンクをたどる
-L --dereference ディレクトリ内のファイルも含めて、全てをシンボリックリンクのリンク先の情報で表示する
-R --recursive ディレクトリを指定した場合、再帰的に表示する


ファイルリストをカラーで表示する

 「--color」オプションで、ファイルの種類別に色を付けて表示できます(画面1)。CentOS 7では、デフォルトで「alias ls='ls --color=auto'」というエイリアスが設定されており、端末では常にカラー出力されるようになっています。

コマンド実行例

ls --color /

ls --color /etc


画面1 画面1 「--color」オプションを付けると、ファイルの種類別に色付きで表示できる

 「--color=auto」オプションの他には、「--color=always」と「--color=none」が指定可能です。「auto」は端末の場合だけカラー出力(デフォルト)、「always」は端末以外の場合も含めてカラー出力、「none」は常にカラー出力しないという動作になります。「none」はエイリアス(alias)設定などを打ち消す場合にも使われます。

 画面1の2つ目の実行例「ls --color=always -C /etc | head」は、「ls --color /etc」を、冒頭部分だけ表示するために「head」コマンドで「--color=always」とし、「-C」オプション(常に複数列で出力:本連載第26回参照)を併用して実行しています。



「ls --color」で使用する色を設定する

 「--color」オプションで使用する色は、環境変数「LS_COLORS」で設定することができます。また、「LS_COLORS」を設定するためのコマンド列は、「dircolors」コマンドで生成します。

 CentOS 7の場合、dircolorsコマンドで生成する“元”となる設定ファイルのサンプルは、「/etc/DIR_COLORS」「/etc/DIR_COLORS.256color」「/etc/DIR_COLORS.lightbgcolor」にあります。

 例えば、「/etc/DIR_COLORS」の設定を試したい場合は、以下のようにコマンドを実行します。

コマンド実行例

eval `dircolors -b /etc/DIR_COLORS`


 上記のコマンド実行例は、(1)dircolorsコマンドで「/etc/DIR_COLORS」を元に、環境変数「LS_COLORS」を設定するためのコマンド列を生成(「-b」オプションはbash用という意味)し、(2)dircolorsコマンドの実行結果(「`dircolors〜`」部分)を、「eval」コマンドで実行する、という動作になります。なお、「`」(バッククオート)の意味については、本連載第12回「fileコマンド――ファイル形式を確認する」を参照してください。

 興味がある方は、まず「dircolors -b /etc/DIR_COLORS」だけを実行し、それから「eval `dircolors -b /etc/DIR_COLORS`」を試してみてください。

 以下の画面2の実行例では、まずdircolorsコマンドを実行してから、「eval `!!`」を実行しています。「!!」は“直前に実行したコマンド”という意味です(ヒストリ機能:“応用力”をつけるためのLinux再入門 第5回参照)。また、コマンド実行の前後に「ls --color /」を実行して、色の変化を確かめています。

画面2 画面2 dircolorsコマンドによる色の変化を、「ls --color /」で確認

 「/etc/DIR_COLORS」を元に自分用の色設定を作成したい場合は、ホームディレクトリに「.dircolors」という名前でファイルを「cp」コマンドでコピーし、ファイル内の説明に従って書き換えます。ホームディレクトリの「.dircolors」はログイン時に自動で読み込まれます。

コマンド実行例

cp /etc/DIR_COLORS ~/.dircolors

(「~/.dircolors」というファイルを編集。不要になったらファイルを削除すればOK)


 作成した設定を試す場合は、ホームディレクトリで「eval `dircolors .dircolors`」を実行します。これで、次回のログイン時に「~/.dircolors」が自動で読み込まれるようになります。



筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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