hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

Macのクリップボードにコピーしたりする関数

Macのターミナルで,pbcopy,pbpasteすると,クリップボードにコピー,ペーストできる.
こうやって,名前に23を含むGitのブランチをチェックアウトするとか.

% git branch | grep 23 | pbcopy
% git checkout `pbpaste`

この例でもそうだけど,何かをgrepしてコピーするのに使われることが多い(と思った)ので,grepした結果をコピーする関数を作った.

function pb()
{
    if [ -t 0 ]; then
        pbpaste
    else
        if [ $# -gt 0 ]; then
            a=$(cat - | grep $*)
        else
            a=$(cat -)
        fi
        echo $a
        echo -n $a | pbcopy
    fi
}

パイプで入力が来ないとき,pbpasteになる.
パイプで入力が来るが,引数がないとき,pbcopyになる.
パイプで入力が来て,引数があるとき,引数でgrepした結果をpbcopyする.


さっきのがこうなって,ちょっと短いし,コピーされた内容が表示されるので,何がコピーされたか確認できる.

% git branch | pb 23
  emacs23
% git checkout `pb`


便利クリップボードコマンド — Gist

追記

ちょっと更新して,最後の改行はコピーしないようにした.改行もコピーされてると,ターミナルに貼り付けた瞬間にコマンドが実行されて,ちょっと怖い.