過去に実行したコマンドを再度実行する

history ... unix系OSでshellに存在する組み込みコマンドだ。

過去に実行したコマンドを表示できる。

historyコマンドで表示されたコマンドの番号を!と合わせて入力すると、そのコマンドを実行できる。

$ history
  1  ls
  2  pwd
  3  cd /etc
$ !1
ls
hogedir/    fugafile

以下のようにして全履歴を表示できる。

出力した後はgrepで煮るなり焼くなりするのが良いかと。

$ history -E 1
# 履歴を全て表示する

.zshrcでの設定

.zshrcでhistoryに関する設定をしておく

# .zshrc
HISTSIZE=50000 # メモリに保存するコマンド数
HISTFILE=~/.zsh_history
SAVEHIST=100000 # ヒストリファイルに保存するコマンド数

alias history="history -i"
function history-all { history -E 1 }

# 重複するコマンド行は古い方を削除
setopt hist_ignore_all_dups
# 直前と同じコマンドラインはヒストリに追加しない
setopt hist_ignore_dups
# コマンド履歴ファイルを共有する
setopt share_history
# 履歴を追加 (毎回 .zsh_history を作るのではなく)
setopt append_history
# 履歴をインクリメンタルに追加
setopt inc_append_history
# ヒストリを呼び出してから実行する間に一旦編集可能
setopt hist_verify
# 余分な空白は詰めて記録
setopt hist_reduce_blanks
# historyコマンドは履歴に登録しない
setopt hist_no_store