Mac のターミナル上でクリップボードを利用する

Mac のターミナル上でクリップボードを利用する

Mac におけるクリップボード (コピペ領域)はペーストボードという名称で利用されています。GUI上では 「⌘+c」、「⌘+v」、「⌘+x」等でコピー、ペースト、カット等が可能で、メニューバーの「編集」タブの項目からや、文字列を選択、右クリックメニューからもコピペができ、Windows や昨今の Linux デスクトップ環境とほとんど同様の操作で利用することができます。

Mac の利点の一つとして UNIXライクな OS で CUI 環境を利用しやすい点があるかと思います。では、CUI上(ターミナル上)でペーストボードに保存された値を特定のコマンドに渡したり、逆にコマンド結果をペーストボードに格納するにはどうすればよいでしょうか。実は Mac には標準でペーストボードを利用できるコマンドが用意されています。コマンドは以下の 2 つです。

  • pbcopy :ペーストボードに値を格納
  • pbpaste:ペーストボードから値を取り出す

これらのコマンドは「pboard」というデーモンによって管理されています。なお、「pboard」デーモン自体は OS X が立ち上がる時に自動起動されるため、コマンドは実行可能ですが、基本的に実行しても意味はありません。

利用方法

pbcopy

オプションなしで実行すると、下記のように標準入力からの待ち状態となり、クリップボードにコピーしたい文字を入力して「ctl+d」を押下することで、入力文字をクリップボード領域に格納することができます。

MacBook-Pro:~ Admin$ pbcopy
aaaaaaa
sssss
dddddddd
ss
[ctrl+d]
MacBook-Pro:~ Admin$

pbpaste

オプションなしで実行すると、クリップボードに格納された情報を取り出し、標準出力へ出力します。

MacBook-Pro:~ Admin$ pbpaste
aaaaaaa
sssss
dddddddd
ss
MacBook-Pro:~ Admin$

パイプやリダイレクトを使う

pbcopy, pbpasteはパイプ、リダイレクトにも対応しています。例えば、以下のような使い方ができます。

MacBook-Pro:~ Admin$ #pbcopy でパイプを利用
MacBook-Pro:~ Admin$ echo test |pbcopy
MacBook-Pro:~ Admin$ pbpaste
test
MacBook-Pro:~ Admin$ #pbpaste でリダイレクトを利用
MacBook-Pro:~ Admin$ echo test2 |pbcopy
MacBook-Pro:~ Admin$ pbpaste > ./testfile
MacBook-Pro:~ Admin$ cat ./testfile
test2
MacBook-Pro:~ Admin$

実際の利用シーンとしては単独よりも、シェルスクリプト等で利用することが多そうです。