lsコマンドを使う(その2)

【連載】

にわか管理者のためのLinux運用入門

【第11回】lsコマンドを使う(その2)

[2016/02/23 08:00]後藤大地 ブックマーク ブックマーク

サーバ/ストレージ

ディレクトリとファイルを区別する(従来の方法)

従来、lsコマンドの説明をする際には前回紹介した「-a」と「-l」の2つのオプションと、「-F」というオプションが取り上げられることが多かった。まずは、今回初めて登場する「-F」について簡単に説明しておきたい。

例えば、次のようにlsコマンドでルートディレクトリ直下のディレクトリ/ファイルの一覧を取得したとしよう。

lsコマンドで取得したルートディレクトリ直下のディレクトリ/ファイルの一覧

ご覧のとおり、画面上では表示されたのがディレクトリなのかファイルなのかがわからない。lsコマンド実行時に-lオプションを指定すれば、これが判別できるようになるのは前回説明したとおりだ。表示されるリストの最初の文字が「d」ならディレクトリ、「-」ならファイルである。

-lオプションを指定すれば、ディレクトリ/ファイルが詳細情報とともに表示される

ただし、「-l」を指定するとファイルの所有者やサイズ、最終更新日時といったデータも表示される。ディレクトリなのかファイルなのかだけを知りたい場合には冗長だ。

そんな時に使えるオプションが「-F」である。このオプションを指定すると、対象がディレクトリの場合には名前の後ろにスラッシュ(/)が付くようになる。

-Fオプションを指定すると、ディレクトリは名前の後ろにスラッシュが付くようになる

これが、これまで一般的に紹介されていたディレクトリとファイルのシンプルな見分け方だ。しかし、白黒ディスプレイをほとんど使うことがない現在ならば、-Fオプションよりももっと良い方法がある。ディレクトリやファイルといった種類ごとに、色付けして表示させれば一目瞭然だ。

ディレクトリとファイルを区別する(”ナウい方法”)

実は、最近のlsコマンドはディレクトリやファイルごとに色を変えて表示する機能を持っている。この機能は実装によってオプションや設定方法が異なるため、OSごとに設定する必要があるのだが、ここではCentOSなどのLinuxディストリビューションで使われていることが多いGNU Coreutilsのlsコマンドと、Mac OS X/FreeBSDのlsコマンドの方法を紹介しよう(Mac OS XのUNIXコマンドのほとんどはFreeBSDから持ってきているため、同じコマンドが使えるのだ)。

まず、GNU Coreutilsのlsコマンドならば、オプション「—color」を指定することで表示の種類ごとに色が付くようになる。

GNU Coreutilsのlsコマンドならば、オプション「—color」を指定すると、表示に色が付く

Mac OS X/FreeBSDのlsコマンドならば、オプション「-G」だ。

Mac OS X/FreeBSDのlsコマンドならば、オプション「-G」を指定すると、表示に色が付く

表示する色の指定は、環境変数の設定で行う。設定値の詳細については割愛するが、GNU Coreutilsでは環境変数「LS_COLORS」の値を設定することになる。例えば、次のように設定した場合、表示色が画面のように変更される。

ここで使っている「export」は、環境変数を設定したり、表示したりするためのコマンドだ

Mac OS X/FreeBSDならば、環境変数「LSCOLORS」を次のように設定すると、画面のような配色になる。

呪文のように見えるが、前から順に2文字1セットでディレクトリ名、ファイル名などの色を指定している

ここで、「そもそも色を変更する必要があるのか?」という話なのだが、これが結構必要なケースがあるのだ。主な理由を挙げてみよう。

  • 設定色がターミナル画面上で見づらい。これは、ターミナル・アプリケーションの変更などで発生しやすい
  • ログインする環境ごとに表示される色が変わるとまぎらわしいので、同じ配色に統一しておきたい

些細なことのようだが、この2点が意外と大きな理由になる。文字が読みづらかったり、表示色がしっくりこなかったりすると、ストレスがたまるし、作業効率にも影響する。

ディレクトリ名の最後にスラッシュが付くより、表示自体が色分けされたほうが直感的でわかりやすい。標準規約がないので、環境によって指定するオプションが異なる点は残念なところだが、ぜひこの色付け機能は押さえておいてほしい。

“ナウい方法”をあらかじめ設定しておく

さて、色付けが便利なのは良いが、使用頻度の高いlsコマンドで毎回オプションを指定するのは面倒くさい。これは、インタラクティブシェルの「alias(エイリアス)」という機能を使うと解消できる。LinuxディストリビューションやMac OS Xではインタラクティブシェルとしてbashが使われているので、bashのエイリアス機能を使えばよいだろう。なお、bash以外ではzshが使われることが多い。

CentOSの場合、次の画面のように「alias ls=”ls —color”」と入力して実行する。

lsコマンド実行時、常に—colorオプションが使われるようにする(CentOSの場合)

Mac OS X/FreeBSDならば、同じ要領で「alias ls=”ls -G”」を実行すればよい。

便利になるとは言え、ログインするたびに毎回入力するのはやはり面倒なので、これらのエイリアスもログイン時に自動実行されるように設定しておきたい。そこで、インタラクティブシェルにbashを使っているなら~/.bashrcに次のような設定を追加しておく。


export LS_COLORS='di=32:ln=35:so=01:pi=33:ex=31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30'
alias ls="ls --color"

もしzshを使っているなら、~/.zshrcに次のような設定を追加する。


export LSCOLORS=cxFxCxdxBxegedabagacad
alias ls="ls -G"

色の指定についてはlsコマンドのマニュアルに書いてあるので、そちらを参考にしていただきたい。色の見やすさは人によって違うので、いろいろ変えて好みの設定を見つけるとよいだろう。

今回のおさらい

今回のおさらいは次のとおりだ。

  • lsコマンドの出力には、色を付けることができる
  • Linuxディストリビューションの場合、lsコマンドで出力される表示に色を付けるにはオプション「—color」を指定する
  • Linuxディストリビューションの場合、lsコマンドで出力される表示の色を変えるには環境変数「LS_COLORS」の値を変更する
  • Mac OS X/FreeBSDの場合、lsコマンドで出力される表示に色を付けるにはオプション「-G」を指定する
  • Mac OS X/FreeBSDの場合、lsコマンドで出力される表示の色を変えるには環境変数「LSCOLORS」の値を変更する
  • エイリアスを使えば、オプションを常に有効にできる

実は、ディレクトリとファイルだけではなく、ファイルの種類(普通のファイル、特殊なファイル、シンボリックリンク・ファイルなど)も色によって区別できる。こちらについてもいずれ紹介したい。この色付けは、単純ながら一度使い始めるとやめられないくらい便利な機能なので、ぜひとも活用していただきたい。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【特別企画】 管理者にお馴染みの

【特別企画】 管理者にお馴染みの"バックアップ問題"、Win/Linux混在環境の担当者が出した答えとは?

地味ながらも面倒なうえ、ミスが許されないために精神的苦痛も伴うシステム管理作業。それがバックアップではないだろうか。コスト抑制のためLinuxを使って自力で構築したが、運用に関してもお金をかけられず、シェルスクリプトを組んでバックアップを行う。しかし、細かい作業にそれなりの人足をとられるため結果的にコストが嵩むうえ、実のところ正常にリストアできるかも怪しい。…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
知りたい! カナコさん 皆で話そうAIのコト
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る