[Mac] Automator を使って Finder 上から直接ファイルの内容をクリップボードにコピーする


動機

「Git で clone してきたサンプルコードをちょっとコピペして試してみたい...」 ときに、毎回エディタ上でファイルを開いてからコピーするのは面倒くさい。

なので、Mac で Finder 上から直接ファイルの内容をクリップボードにコピーする方法を調べてみた。

OSX Yosemite 10.10.5 で動作確認を行ったが、恐らく他のバージョンでも動くと思う。

方法

結論としては、Automator を使えば簡単に実現できる。

  • まず、アプリケーション ディレクトリの中の Automator (/Applications/Automator.app) を起動しよう。 以下のようなアイコンが目印。

  • Automator が起動したら、新規書類を作成する。すると、以下のようなウィンドウが表示されるので、サービス を選択状態にして 選択 ボタンをクリックする。

  • Finder 上でファイルの内容をクリップボードにコピーするワークフローを作成する。ウィンドウ左側の ライブラリ から ユーティリティ を選択し、その隣のメニュー中にある シェルスクリプトを実行 という項目を、ウィンドウ右側の "ワークフローを作成するには、ここにアクションまたはファイルをドラッグしてください。" というメッセージが表示されているエリアにドラッグ&ドロップしよう。

  • 続いて、以下の設定を順番に行う。

    • "サービス"は、次の選択項目を受け取るファイルまたはフォルダ に設定する。
    • 検索対象Finder に設定する。
    • 入力の引き渡し方法引数として に設定する。
    • 実際に実行するシェルスクリプトの内容を、以下のように設定する。
cat $@ | LC_CTYPE=UTF-8 pbcopy

(ここでは LC_CTYPE=UTF-8 を指定することでロケールの文字コードを UTF-8 に設定している。Automator でシェルスクリプトを実行する際にはロケールの設定が行われていないため、このようにロケール情報を設定しておかないと日本語が文字化けした状態でコピーが行われてしまう。)

  • 以上の設定が行えたら、ファイル メニューから 保存... を選択し、このワークフローを保存しよう。

    • 保存する際、名前に日本語が含まれていると正しく認識されないようなので、名前は英語で入力するのが無難。
  • 以下にここまでの全作業を行った後の状態を示す。

    • シェルの設定が /bin/zsh になっているが、これは僕の環境のデフォルトのシェルが zsh であるだけなので、合わせる必要はない。シェルの設定を特に行っていない場合には /bin/bash などになるだろう。

  • これにより、Finder 上でコンテキストメニューから選択したファイルの内容を直接クリップボードにコピーすることができるようになった。

参考