おんがえしの blog

作ったプログラムと調べた技術情報

gren - 2010/08/05のやったこと - マルチキーワード検索、現在位置だけを検索(--this)

最新のオプション画面です。

% gren -h
gren [option] pattern
    -d, --directory DIR              Start directory. (deafult:".")
        --depth DEPTH                Limit search depth. 
        --this                       "--depth 0"
    -i, --ignore                     Ignore case.
    -s, --silent                     Silent. Display match line only.
        --debug                      Debug display.
    -c                               Color highlight.
    -f, --file-regexp REGEXP         Search file regexp. (Enable multiple call)
        --if, --ignore-file REGEXP   Ignore file pattern. (Enable multiple call)
        --id, --ignore-dir REGEXP    Ignore dir pattern. (Enable multiple call)

やったこと

  1. -cで色付き表示
  2. -f, --if, --idオプションを何個でも設定出来るように
  3. -sでサイレントモード、マッチした行のみを表示する
  4. 探索ディレクトリを第2引数で渡す形ではなく、-dオプションで渡すように(マルチキーワード検索への布石)
  5. マルチキーワード検索に対応(絞り込み検索出来ます)
  6. --depth, --this で探索する階層数を指定出来るように

つぶやき

マルチキーワード検索はgoogle検索のように指定した複数のキーワード全てにマッチした行だけを表示するものです。直感的に絞り込み検索出来るようになります。こいつを実現するために第2引数で渡していたディレクトリ指定を、-dオプションに引っ越しました。

thisは指定した探索ディレクトリ位置だけを検索対象とするオプションです。ホームディレクトリにある.emacsや.bashrcを検索する時だけ、grepに切り替ずにgrenだけで検索可能です。

IO#isattyを使う方法を検討したのですが、gren extern > ~/tmp/poi した時に結果画面が表示されないのが個人的に嫌だったので、-sを付けたサイレントモードを足す、という形で落ち着けました。