historyをインクリメンタルサーチして実行したりする

SKIYAKIでエンジニアをしてるらしい kouno と申します。

普段は横須賀で提督業に勤しんだり、焼却された人理の復元をしてたりしますが、エンジニアブログに何かを書けと言われたので、少し書いてみようと思います。

今までは過去に実行したような気がするコマンドを探すのにhistory | grep hogeとかしていたのですが、peco というものに出合って割とこの辺の探し物とかが便利になったので以下つらつらと。

まずはpecoの導入

環境は MacOSX 10.11.13 とかです。

$ brew tap peco/peco
$ brew install peco

※homebrew導入済みのOSXにて brew tap peco/peco 不要かも?

次にシェルの準備

[~/.bash_profile]
shis () { #search shell history
  if grep -q '^[0-9]\+$' <<< "$1";then
    history $(($1 + 1))
  else
    history
  fi | sort -r | sed 1d | peco --prompt "Select history to copy:" | cut -d ' ' -f 5- | pbcopy
  pbpaste
}

rhis () { #run shell history
  eval "$(shis "$1")"
}

実践してみる

これで $ rhis とかすると、history コマンドの結果に対して、インクリメンタルサーチが出来るうえに、 画面上で実施したいコマンドを選択すると、その場で実行してくれます。 実行でなくて、ただ探したいだけの時は $ shis で探して選択する事が出来ます。 ザックリと使い方だけですが、詳細な仕様等は参考下記のURLをご参照下さい。

参考

参考URL