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$
実際の利用シーンとしては単独よりも、シェルスクリプト等で利用することが多そうです。