📋

pbcopyでMacのターミナルの出力結果を表示しつつコピーできるようにする

2024/08/14に公開

https://zenn.dev/ktansai/articles/55406f543bc1bd

の記事にあるように、

以下のコマンドを実行して、SHAをコマンドで簡単に取得できるようにしていました。

$ git sha
e96249b

ただ、普段使う際は、その値を毎回カーソルでコピーしていたので、
マウス操作が面倒くさいなと言う気分になり、

下記のように出力結果をクリップボードにコピーするようにしていました。

$ git sha | pbcopy

pbcopyは便利なのですが、出力結果を、ターミナル上で確認しながら、クリップボードにコピーできないかなと調べてみたところ、こちらの記事で、
https://zenn.dev/notakaos/articles/20220921-macos-pbcopy-pbpaste

# 標準出力に内容を出力しつつ、クリップボードにコピー
cat hello.json | tee >(pbcopy)

というのを見つけました。

ただ、使いたくなるたびに、 検索して |tee > (pbcopy) を思い出す必要があったので、
pbcopyを使うと、勝手に、標準出力にもクリップボードに結果を出してくれないかなと気になって、調べてみました。

結論

bashrcやzshrcにシェル関数として下記のように書いてあげると、良さそうです。
関数名はcb(クリップボード)で分かりやすい+打ちやすいので、これにしましたが、好きな名前をつけて上げればよいと思います。

.zshrc
function cb() {
    if [ $# -eq 0 ]; then
        # 引数なしの場合は標準入力をteeで処理
        tee >(command pbcopy)
    else
        # 引数がある場合は通常のpbcopyとして動作
        command pbcopy "$@"
    fi
}

aliasでも同じことが出来そうかもと思いつつ、とりあえず動いたのでこれを使おうと思います。

Discussion