zshでコマンドライン
履歴を活用する2015/05/04
三宅 英明(mollifier)
自己紹介
名前: 三宅 英明
Twitter: @mollifier
はてなID: mollifier
神戸のプログラマ
好きなもの
zsh
vim
vimperator
ブログとか
はてなブログ
http://mollifier.hatenablog.com/
Twitter
http://twitter.com/mollifier
Qiita
http://qiita.com/mollifier
zshでコマンドライン履歴を活用
する
コマンドライン履歴とは
実行したコマンドを覚えていて、後
から使えるやつ
コマンドライン履歴
過去に入力したコマンドをもう一度
入力したいことが、けっこうある
コマンドライン履歴
毎日のように使うコマンドで、決まり
きったパターンを何回も入力するの
がめんどう
だいぶ前に入力したあのコマンドを
もう一度使いたいけど、引数の指定
とか忘れてしまった
コマンドライン履歴
そんなときはコマンドライン履歴を
使えばOK
1回入力したコマンドラインを覚えて
おいて、あとから使える
コマンドライン履歴を保存する
とりあえず基本の設定
HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000
コマンドライン履歴を保存する
HISTFILEはコマンドライン履歴を保
存するファイル名の指定
何でもいいけど、~/.zsh_historyと
している人が多いもよう
別のファイル名でもいい
コマンドライン履歴を保存する
HISTSIZE、SAVEHISTはコマンドラ
イン履歴を何行保存するかの設定
普通は同じ値を設定しておけばOK
コマンドライン履歴を保存する
多めの設定を推奨
1万とか、なんかセコい
コマンドライン履歴を保存する
目安としては一生使っても使い切れ
ないぐらいの量
100万にしたら普通の人は100年
使っても足りるので、だいたいそれ
ぐらいでOK
気前よく1億とかにしてもOK
コマンドライン履歴を保存する
これでコマンドライン履歴が保存さ
れるようになる
コマンドライン履歴のためのオ
プション
これも足しておいたほうがいい
setopt share_history
setopt hist_ignore_all_dups
コマンドライン履歴のためのオ
プション
setopt share_history
同時に起動したzshの間でヒストリ
を共有する
コマンドライン履歴のためのオ
プション
setopt hist_ignore_all_dups
同じコマンドをヒストリに残さない
コマンドライン履歴
これで準備完了
コマンドライン履歴を活用する
保存するだけでは意味がない
保存したやつを後から便利に使う
方法を紹介する
コマンドライン履歴の活用(1)
コマンドライン履歴を閲覧するには、
historyコマンドを使う
% history
2880 cd
2881 ls
2882 cd work
2883 git status
コマンドライン履歴の活用(1)
historyコマンドで、最近16件の履
歴が表示される
コマンドライン履歴の活用(1)
全件表示したいときは引数を付ける
% history 1
1 mkdir work
2 ls
3 cd work
...
コマンドライン履歴の活用(1)
history 番号で、表示を開始する
番号を指定する
マイナスの番号も指定できる。例え
ばhistory -10で最近10件の履歴
を表示する
コマンドライン履歴の活用(1)
特にhistory 1で、すべてのコマン
ドライン履歴を表示する
コマンドライン履歴の活用(1)
もう一つ大事なオプション。history -
nで、履歴の番号を表示しなくなる
% history -n
cd
ls
cd work
git status
コマンドライン履歴の活用(1)
これで履歴を表示して、grepで検索す
る
% history -n 1 | grep 'git'
git commit
git init
git commit --ammend
...
コマンドライン履歴の活用(1)
汎用的。シェルの種類は関係ない
あんまりお手軽ではない
でも、正規表現で細かく条件を指定
して探せる
コマンドライン履歴の活用(1)
こんなaliasを設定しておくと便利
alias history-all='history -n 1'
コマンドライン履歴の活用(2)
インクリメンタル検索する
標準のCtrl+rで使える
コマンドライン履歴の活用(2)
デモ
コマンドライン履歴の活用(2)
これを~/.zshrcに書くと、インクリメンタ
ル検索でパターンマッチが使えるよう
になる
bindkey '^R' history-incremental-pattern-search-backward
コマンドライン履歴の活用(2)
記号としては、次の2つを覚えておけば
OK
記号 意味
* 長さ0以上の任
意の文字列
^ コマンドラインの
先頭
コマンドライン履歴の活用(3)
今の入力を元にコマンドライン履歴か
ら補完する
autoload -Uz history-search-end
zle -N history-beginning-search-backward-end 
history-search-end
bindkey "^O" history-beginning-search-backward-end
コマンドライン履歴の活用(3)
言葉では説明しにくいのでデモを見
せる
コマンドライン履歴の活用(3)
これが便利
キーバインドはお好みで
コマンドライン履歴を活用する
grepで全件から検索
インクリメンタル検索
今の入力を元に履歴から補完
とりあえずこれぐらいでOK
コマンドライン履歴を活用する
コマンドライン履歴は、自分がシェ
ルを使った記録が保存されている
大事なデータ
ブックマークやスニペットのようなも
の
コマンドライン履歴を活用する
もう、1回入力したコマンドは2度と
手入力しない
2回入力してしまったら死ぬ、ぐらい
の勢いで
コマンドライン履歴を活用する
細かい引数とかを覚えてなくてもコ
マンドが使えるようになる
シェルの操作が速く、確実になるの
で、上手に活用してください
zshでコマンドライン履歴を活用
する
ありがとうございました

zshでコマンドライン履歴を活用する