macOSオリジナルのコマンドでクリップボードを操作できる pbcopy, pbpasteの2つのコマンドを覚えておくと、毎回マウス(トラックパッド)で選択してCommand+Cとかする必要がないので楽ちんです。
コピー
$ date | pbcopy
ペースト
$ pbpaste
2020年 1月 9日 木曜日 22時26分49秒 JST
目次
利用方法
基本的な使い方
クリップボードにコピーするためには、パイプでpbcopy
に渡すだけ。パイプではなくリダイレクトをするとpbcopy
という名前のファイルが作成されますのでご注意を(←よくやるw)
$ echo "Ghosn has gone" | pbcopy
クリップボードから取り出してペーストしたいときはpbpaste
コマンドを実行するだけです。
$ pbpaste
Ghosn has gone
単にペーストするならCommand+Vした方が手っ取り早いわけですが、要は他のコマンドと組み合わせて使えるって話ですね。例えばクリップボード内の文章に特定の文字列がいくつ含まれるかカウントする際、一時的なファイルを用意すること無くサクッと実現できます。
$ pbpaste | grep "猫" | wc -l
103
クリップボードへファイルの内容をコピー
これまで通りパイプで渡しても良いですし、リダイレクトしても同様の結果になります。
$ cat foo.txt | pbcopy
$ pbcopy < foo.txt
クリップボードを空にする
「空」のデータをpbcopy
に渡してやります。お好きな方法でどうぞ。
$ pbcopy < /dev/null
$ cat /dev/null | pbcopy
$ echo -n | pbcopy
クリップボードから書式情報を削除する
ペーストする際に-Prefer
オプションを付けると、データ形式を指定することができるので、これを利用してやります。以下の例では「テキスト形式」で出力しそのままpbpasteに渡すことで余計な書式情報を削除することができます。
$ pbpaste -Prefer txt | pbcopy
-Prefer
オプションはこの他にも以下のような物があります。
オプション | 説明 |
---|---|
txt | テキスト形式 |
rtf | リッチテキスト形式 |
ps | PostScript |
-Prefer
オプションはpbpasteのみ利用可能ですのでご注意を。
注意点
バイナリは扱えない
一部の例外を除き画像などのバイナリは扱えないようです。
DESCRIPTION
The input is placed in the pasteboard as plain text data unless it begins with the Encapsulated PostScript (EPS) file header or the Rich Text Format (RTF) file header, in which case it is placed in the pasteboard as one of those data types.
man pbcopyより
文字コードが自動変換される
pbcopy/pbpasteは文字コードを勝手に変換してしまう仕様になっています。実験用にシフトJIS形式のテキストファイルを用意しました。
$ cat foo.txt | nkf --guess
Shift_JIS
このファイルをpbcopyに食べさせ、pbpasteで呼び出すと最終的にUTF-8形式に変換されてしまいました。
$ pbcopy < foo.txt
$ pbpaste | nkf --guess
UTF-8
これは環境変数LANGの設定値により変換される文字コードが決まるようです。
DESCRIPTION
pbcopy and pbpaste use locale environment variables to determine the encoding to be used for input and output. For example, absent other locale settings, setting the environment variable LANG=en_US.UTF-8 will cause pbcopy and pbpaste to use UTF-8 for input and output. If an encoding cannot be determined from the locale, the standard C encoding will be used.
man pbcopyより
試しに環境変数をShiftJISに変更して実行すると今度はシフトJISになりました。
$ export LANG=ja_JP.ShiftJIS
$ pbcopy < foo.txt
$ pbpaste | nkf --guess
Shift_JIS
文字コードが変わると困るような用途では注意する必要がありますね。
おまけ
「pb」ってなんやねん
ちなみに頭に付いているpb
はpasteboard
の略称だと思われます。macOSやiOS上ではクリップボードのことを「ペーストボード」と呼称するようです。
Apple iOS
The clipboard is called “pasteboard” in iOS similar to OS X.
Wikipedia Clipboard (computing)
macOSに付いてくるアクティビティモニタで確認すると、pborad
というプロセスがいますがこいつがクリップボード…もといペーストボードを管理しているようですね。
参考ページ
- Wikipedia Clipboard (computing)
- Apple Pasteboard
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。