Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

Shellのコマンド履歴に任意のコマンドを残したい

$
0
0

Problem

Interactive filterを使っていたりするとコマンドよりも結果をhistoryに残した方が便利なケースが度々あります。

# 例:fzfで選択したファイルをvimで開くalias v='_vim_fzf'
_vim_fzf (){local file
  file=$(fzf +m -q"$1")&& vim "$file"}

上記の場合、historyを遡っても選んだファイルは出てきません。

Solution

Bashではhistory -sを使います。

_vim_fzf (){local file
  file=$(fzf +m -q"$1")&&history-s"vim $file"&& vim "$file"}

このように書き直すと、vコマンドの代わりにvim [選んだファイル]が履歴に残るのでCtrl-RやCtrl-Pでファイルを再び開くことが可能になります。

Further Work (Zsh)

Zshではprint -sが相当するそうです。

$ print -s"alternative command"$ history# ...#  99 print -s "alternative command"# 100 alternative command

問題は上のようにprintコマンド自体も保存されてしまうことです。もっと良い方法があれば教えてくださいmm


Viewing all articles
Browse latest Browse all 2722

Trending Articles