現実逃避として格好のシェルスクリプト書き。今回はXのクリップボード操作コマンドであるxselを利用して、stdout (+stderr)をクリップボードにコピーする(更にまたstdoutに書き戻す)zshのグローバルエイリアスを書いてみました。

if exists xsel; then
  alias -g   B=" | xsel -bi" # stdout => clip
  alias -g  B2=" 2>&1 | xsel -bi" # stdout + stderr => clip
  alias -g  BB=" | (cat 1>&2 | xsel -bi) 2>&1" # stdout => clip and stdout
  alias -g BB2=" 2>&1 | (cat 1>&2 | xsel -bi) 2>&1" # stdout, stderr => clip and stdout
fi

zshにおけるグローバルエイリアスとは、alias -gで定義され、「コマンドライン中のどこでも」展開されるエイリアスです。普通のエイリアスは先頭でないと展開されませんが、グローバルエイリアスを用いることで、コマンド末尾につけるパイプ的な処理を効率化することが出来ます。

lessやgrepなどをLとかGとか設定すると便利です。

今回設定したB, B2, BB, BB2ですが、

  • B はstdoutをクリップボードにコピー
  • B2 はstdoutとstderrをクリップボードにコピー
  • BB はstdoutをクリップボードにコピーし、またstdoutに出力
  • BB2 はstdoutとstderrをクリップボードにコピーし、またstdoutに出力

となっています。
名前をC, C2, .. としなかったのは、

make CC=g++

などとしてコマンドライン中で普通に使われそうだったからです。この辺は完全に好みなので何でも良いと思いますが。

早速zshrcに追加したので、まだzshを使っていなくても、丸々コピペですぐに便利設定にできます。