Appleプラットフォームでは、ユニバーサルクリップボードという機能が使えます。 簡単にいうと、コピペした文字列を全てのAppleデバイスで使えます。 コピペした文字列を大きな画面で検索したいなとか、サイトのログインIDやパスワードをコピペして、別の端末でサイトにログインなんてときに便利な機能です。
これはAppleがソフトウェア(OSやアプリケーション)とハードウェア(Mac,iPhone, iPad)を作っているからこそできる芸当ですね。
まあでもそういう機能は知っていた(し、普段も使っている)のですが、pbcopy
コマンドでも同じことができるのは初めて知りました。
pbcopyとpbpasteコマンド
クリップボードを普段使う時は、「コマンド+C」でコピーして「コマンド+V」でペーストします。マウスやトラックパッドを使っても同じ結果になります。 pbcopyとpbpasteというコマンドはそれをコマンドで使いやすくするようにしたものです。
例えば作業用のMacで次のように実行して
% echo "hogehoge" | pbcopy
他のMacでpbpaste
を実行すると、当然ながら文字列のペーストが可能です(マウスやキーボード操作でペーストしてもOK)。
% pbpaste| cat hogehoge
iOSやiPadOSデバイスでペースとしてもちゃんとペーストされるのを確認しています。 例えば、さらにこう実行して
% echo "hogehuga" | pbcopy
別の端末、例えばiPad上の何らかのアプリでペーストすると、すぐ新しい文字列をペーストできました。 そのように作っているわけだから当たり前なのかもしれませんが、ちょっと感動しました。
別の端末でpbpasteコマンドを実行した結果:
% pbpaste | cat hogehuga
macOSでだけ動けばいいスクリプトを書くときは、pbcopyとpbpasteコマンドは役立つ日が来そうです(来るかな?)。
今日説明したようなことを実現するには、各端末で同じApple IDでのログイン、Handoff機能が有効化されており、 同じWi-Fiに接続され、かつBluetoothにつながっている必要があるようです(ここら辺の要件はユニバーサルクリップボードと一緒)。
クリップボード機能自身は他のOSでも利用可能ですが、ユニバーサルクリップボードみたいなものはAppleのOSでしか実現できないようです。 MicrosoftがWindows Phoneをまだ続けていたら同じようなことができたかもしれませんけどね。 便利だから、探せば類似するものはあるのかもしれませんけどね。
ちなみに、pbcopy, pbpasteのmanを見ると、January 12, 2005と表記されています。ユニバーサルクリップボード対応になったのは最近でしょうけど、ずいぶん昔からmacOSにあるコマンドのようですね。
Ubuntuならxselがあるみたいです。
Windowsなら標準のclip.exeが使えるようです。
たまに最近のmacOSは荒ぶりますが、これだからmacOSを使うのをやめられません*1。
*1:とか言いつつスマホは最近Pixel 8を買ってしまったので、若干その恩恵は受けづらくなりましたけど