2014年01月22日

hh - より良い history コマンド。 BASH command completion from the history

CLI をワーク・ホームにしている人なら頻繁に利用するコマンド・ベスト10にランキングされてもおかしくないのが history コマンド。
勿論、僕もそう。 複雑なオプションが必要なコマンド、何時だったかsshで接続先したホスト、アドレスを思い出すのに便利ですよねぇ。
この history をもっと便利にしてくれるのが今日ご紹介する hh 、 history をベースとした Bash コマンド補完ユーティリティです。

hxtr - bash  command completion

便利な history コマンドに感じるストレス・・・


僕のラップトップでも history は大活躍。 よく使うので $HOME/.bashrc で history サイズを拡張しているくらい。

$ cat ~/.bashrc
--- snip ---
# for history command
# format
HISTTIMEFORMAT='%F %T -> '
# history instance size
HISTSIZE=3000
# history persistence size
HISTFILESIZE=3000


こんな大好きな history コマンドにも時々不便に感じることがあります。 例えば検索が弱いところ。

「えーっと、この前 SSH で接続したあのホストって・・・」と思い history で探すとしたら、こんなコマンドの組み合わせになるでしょうか。

$ history | grep ssh | grep 192.168 | tail
  748  2014-01-20 18:00:12 -> ssh root@192.168.3.10
  750  2014-01-20 18:10:21 -> ssh root@192.168.1.15
  764  2014-01-20 19:34:35 -> ssh root@192.168.1.11
  769  2014-01-20 19:41:37 -> ssh root@192.168.3.10
  814  2014-01-21 10:06:01 -> ssh root@192.168.5.100
  816  2014-01-21 11:00:28 -> ssh root@192.168.6.16
  953  2014-01-21 16:53:47 -> ssh root@192.168.0.16
  971  2014-01-21 18:50:00 -> ssh 192.168.0.34

冗長的ですし、見やすいとは言えませんから今一つ納得出来ないですよね。

さらに目当てのコマンドを実行するのにコピー、ペースト、Enter キー入力という3つのアクションが必要なのもイヤ。

そんな怠け者の貴方にオススメなのが hh なんです。


hh (hstr) のインストールと設定


hh (hstr) のプロジェクト・ホームはこちら。


git でも clone できますがリリース・ページから安定版をダウンロードした方が早いでしょうね。



貴方が Linux/64bit 版 OS を使っているなら簡単。 バイナリが用意されているので解凍してパスにコピーするだけです。

$ wget https://github.com/dvorka/hstr/releases/download/0.97/hh-0.97-bin-64b.tgz
$ tar xvzf hh-0.97-bin-64b.tgz
hh
$ sudo cp hh /usr/local/bin/hh


ソースコードからビルドするなら、まず依存パッケージをインストールして、

$ sudo apt-get install libreadline-dev libncurses5-dev


hh のソースを make, make install します。

$ wget https://github.com/dvorka/hstr/releases/download/0.97/hh-0.97-src.tgz
$ tar xvf hh-0.97-src.tgz
$ cd hstr/
$ ./configure
$ make
$ sudo make install


最後に動作設定を .bashrc ( MAC OS であれば ~/.bash_profile ?)に追記・ロードすれば全ておしまい。

$ hh --show-configuration >> ~/.bashrc
$ . ~/.bashrc


Mac OS へのインストール方法はこちらをどうぞ。


hh (hstr) の使い方


端末(ターミナル)を開き hh と入力してみましょう。 デフォルトではランキング形式(頻度の高い順)でコマンドの履歴が order 表示されます。

run hh command


Ctr+h キーで通常の history 形式にも切り替えられますよ。

hh order by history


hh の操作は対話的に。 Ctrl+r キー(又は UP or Down キー)でカーソルを移動して、

hh move cursor


目当てのコマンドを選択した状態で Enter キーを入力すると制御が端末に移りコマンドが実行されます。
(代わりに TAB キーを入力すると実行は行わずプロンプト上でコマンドの編集が可能)

run command


リスト中にキーワードを入力すれば動的に絞り込み検索してくれますよ。

hh keyword search


僕のように過去 SSH で接続したホストを探すなら hh 起動後に ssh と入力して( hh の引数でキーワードを指定することも可能)絞りこまれた候補の中から目当てのコマンドにカーソルを移動して、

hh seach ssh


Enter キーで選択すれば即座に history からアクションに遷移できるのです。

run ssh command


ね、便利でしょ。 実際の動画はこちら。



より良い history ライフを。


達人プログラマー―システム開発の職人から名匠への道
アンドリュー ハント デビッド トーマス
ピアソンエデュケーション
売り上げランキング: 47,458

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)
Neal Ford
オライリージャパン
売り上げランキング: 101,309

Posted by netbuffalo at 19:00│Comments(0)TrackBack(0) ユーティリティ | Linux


この記事へのトラックバックURL

コメントする

名前
 
  絵文字