pbcopy コマンドはクリップボードのコピーが出来て便利。
pbcopy コマンドを使うと、ターミナルの出力内容をコピーが出来る。便利なコマンド
でも困ったことが有る。クリップボードにコピーされた内容を見れない。
takuya@~$ ls / Applications Network Users bin dev home lost+found net private tmp var Library System Volumes cores etc installer.failurerequests mnt opt sbin usr takuya@~$ ls / | pbcopy
コピーされると標準出力には出てこない。pbcopyはパイプから読み取った内容をクリップボードにコピーして、その内容を出力することが出来ない。Cygwinなら
ls | tee > /dev/clipboard | grep ....
などと、コマンド途中で挟み込むと結構便利だった。
パイプ途中、結果に冪等性がない場合に面倒くさい。
パイプの途中や、出力内容が乱数を含む場合に不便
コマンドの出力内容をクリップボードにいれるときに、何度実行しても同じ結果になるコマンドであれば、全く問題がないのですが。内容が変化する場合に困ります。
どうするか?→ pbpasteを即時に実行する。
実行結果をpbcopy クリップボードにコピーしつつ、画面にも同じものを出力したい場合、pbcopy のオプションでは出力は一切ないので、コマンドの結果を維持するのに困る。
連続して呼びたいときや、あとで使うためにいったんクリップボードにとっておくような手軽な使い方ができない。逐次ファイルに出すのも面倒くさいようね。
alias pbcopy='pbcopy ; pbpaste'
こうしておけば、コピーしつつ標準出力を維持することができて、もっと手軽に使うことが出来る。
次で使うために、コマンドの結果欲しいときにファイルに出さずクリップボードを経由できるようになる。メモ帳にいったん保存しておこうみたいなときや、目で確認できるから便利。
または && で繋いで
alias pbcopy='pbcopy && pbpaste'
パスワードの自動生成で重宝する。
パスワードを自動生成するときに、この考え方が重宝してる。
ユーザー登録時にパスワードを求められても、メアドや住所などもコピーするので画面に一旦出しておおきたいし、クリップボードにもコピーしたい。両方がほしいときにとても便利。
sf-pwgen -a alphanumeric -l 12 -c 1 |pbcopy ;pbpaste
2017/05/30 変更
パイプで渡すと、起動タイミングが若干ずれる。貼り付けがコピーより速く実行されるみたい。なので、 パイプで渡すより、; や && で別々に起動したほうがよさそう
参考資料
man pbcopy