カラフルなlsを使おう

カラフルなlsを使おう


イントロダクション

solaris9のlsは表示に色をつけるオプションがサポートされていない。しかし、大抵のLinux ディストリビューションに付属するlsは色付けをデフォルトでサポートしたlsを使っている。これはlsのソースコードが違うためにおこる。色のつかないlsはファイルとディレクトリの区別が面倒だ(-Fオプションで少し緩和はできるが)。やはり色によって区別されると、表示されたディレクトリエントリが一体どのようなファイルなのかが一目瞭然に理解できて楽である。ということで、ワークステーションに色づけをサポートしたlsを持ってきて使えるようにしよう。ちなみに、もっとも簡素なlsのソースコードは以下のようになる。

#include<stdio.h> // printf
#include<dirent.h> // DIR, struct dirent
#include<string.h> // strcpy 
int main(int argc, char **argv)
{
  DIR *dp;
  struct dirent *ent;
  char path[256]; 
  if (argc < 2)
    strcpy(path, ".");
  else if (argc < 3)
    strcpy(path, argv[1]);
  else {
    printf("usage %s [path]\n", argv[0]);
    return 0;
  }
  dp =opendir(path);
  while ((ent = readdir(dp)) != NULL)
    printf("%s\n", ent->d_name);
  closedir(dp);   
  return 0;
}

今回使うのはGNU coreutilsである。UNIX, Linuxを語る上でGNUの存在は欠かせないトピックの一つである。以下の文献が参考になるだろう。あとで参照するといいと思う。

wikipediaの「リチャード・ストールマン」の項目
wikipediaの「リーナス・トーバルズ」の項目
http://www.gnu.org/home.ja.html FSFのwebサイト
ついでに以下の文献も参照するといいかもしれない
http://cruel.org/freeware/cathedral.html 伽藍とバザール
http://cruel.org/freeware/magicpot.html 魔法のおなべ
http://cruel.org/freeware/noosphere.html ノウアスフィアの開墾

既に私たちはGNUのソフトウェアの恩恵を受けている。muleはemacsの多言語拡張版である。gccはgnu compiler collectionの略だし、gnuplotはまんまgnuのソフトだ(http://oku.edu.mie-u.ac.jp/~okumura/linux/?gnuplot)。gdbもgnu debuggerだし(ちなみにgdbにはdddというソフトがフロントエンドにある。調べてみるといいかも)、glibというC言語のライブラリもGNUの成果物だ。そのほかにもコンパイラコンパイラであるflexやbisonなどといったソフトがある。

get started

前回書いた記事、Solarisへのmp3プレイヤーのインストールを通じてUNIX系OSでのアプリケーションのソースからのインストールの方法を知るとほとんど同じ手順を踏む。つまり、
1. 公式サイトからソースコードを入手する
2. 圧縮されたファイルを解凍する
3. ソースコードのビルドとインストール
となる。ただし、今回はビルドしたバイナリの一部のみを使うのでインストールはしない。

手順1:ソースコードを持って来る

以下のサーバから最新のcoreutilsを入手する。
http://ftp.gnu.org/gnu/coreutils/
lsなどといった基本的なコマンド群は他の主要なコマンドと含めてパッケージとして配布されている。私はls単体のソースを探すことができなかったのでこれを使うとにした。GNUとFSFの話題作りになったからいいということで。ということでcoreutils-6.9.tar.gzをダウンロードしてホームフォルダに保存する。

手順2:圧縮されたファイルを解凍する。

前回と同じく、
 $ tar xvzf coreutils-6.9.tar.gz

手順3:ソースコードのビルドとlsの実行可能ファイルのコピー

今回の目的は色つきのlsを手に入れることである。従って、解凍してできたファイル群をビルドし、lsの実行可能ファイルだけを取り出す。
 $ cd coreutils
 $ ./configure
 $ make
前回はこのあとmake installしたが今回は違う。lsのバイナリをホームフォルダにコピーする。そのまえに、ホームフォルダにbinディレクトリを作っていない場合は作成してPATHを通すのがいい。
 $ cd
 $ mkdir bin
 $ cat >> .bashrc
 PATH=~/bin:$PATH
 export PATH
 ^D (コントロール+D)
 $ source .bashrc
 $ cp coreutils/src/ls ./bin
これで色づけオプションをサポートしたlsを手に入れた。
 $ ls --color
各ディレクトリエントリが対応した色になって表示されているはず。オプションをつけるのが面倒なら.bashrcにlsをls --colorの別名として定義すればハッピーかもしれない。
 (.bashrc内)
 alias ls="ls -F --color"
終了!

最後に

今回やったのは
  • GNU, FSF, リチャードストールマン

タグ:

+ タグ編集
  • タグ:
最終更新:2007年11月13日 11:53
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。