特定のコマンドを実行した結果をコミットしたいときにコミットメッセージにそのコマンドが記載されていると、あとから見返す時に便利。ただその実行したコマンドをコピーするのにhistoryで履歴呼び出してから先頭に echo
つけてパイプ挟んで pbcopy
して〜という作業がだるかったのでコマンド一発で終わらせたくて書いた。 sed
使うのがシンプルっぽい。
history | sed -n 1p | pbcopy
fishのhistoryは1行目の方が新しいので1行目だけ出力されたい。なので 1p
で1行目を出力する。ただ、そのままだとsedがパイプで受け取った入力を全部垂れ流すので -n
で抑制する。ちゃんと面と向かってsedと付き合ったことなかったので学びの取っ掛かりとしてよかった。
ちなみに、以下のように実行する前にコピーする案のもぱっと思いついたのだけれども、実行結果が大丈夫かわからない状態でコピーしても意味ないなと思ってボツにした。
function copy-command echo $argv | pbcopy $argv end
sedについてもっと調べたくて、DMMのセールで買ったシェルスクリプト基本リファレンスに書いてないかな〜と思ったけど「詳細はオンラインマニュアルを参照してください」で終わっていてはいとなった。