とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
各種SNSのフォローもよろしくお願いいたします。

macOSのpbcopyとpbpasteコマンドもユニバーサルクリップボード対応なのを知った

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を買ってしまったので、若干その恩恵は受けづらくなりましたけど