こんにちは。永和システムマネジメントの内角低め担当、畠山です。
今回は、ターミナルで入力したコマンドを自動的にクリップボードへコピーする zsh フックを書いたのでご紹介します。
これまでは「コマンドを入力→手作業でコマンドをコピー→作業ログへペースト」の3ステップで作業ログを記録していましたが、今回の zsh フックを使うことで「コマンドを入力→作業ログへペースト」の2ステップで作業ログを記録することができます。
~/.zshrc
へ以下のスクリプトを追加すればOKです。
(注)私の環境は macOS なのでクリップボードへのコピーに pbcopy
コマンドを使っています。macOS 以外の方は自分の環境に合わせたコマンドに置き換えてください。
# 入力したコマンドをクリップボードへコピーするフック関数 function preexec_copy_command() { if [ -n "$COPY_COMMAND" ]; then # 実行するコマンドをクリップボードへコピー echo -n $1 | pbcopy fi } # 自動コピー開始 function copy_start() { export COPY_COMMAND=1 } # 自動コピー停止 function copy_stop() { export COPY_COMMAND= } # `add-zsh-hook` をロード autoload -Uz add-zsh-hook # preexec 時(コマンド実行直前)に preexec_copy_command を実行するようフックを追加 add-zsh-hook preexec preexec_copy_command
copy_start
でコマンドの自動コピーを開始し、copy_stop
で自動コピー停止します。
# 自動コピー開始 $ copy_start # 自動コピー停止 $ copy_stop
使ってる様子はこんな感じ。入力する度にコマンドがクリップボードへ自動コピーされます。
うちのシェルはzshじゃないよーという方も、お使いのシェルに何かしらのフック機構があると思うので、そちらで試してみると良いかも。