macのfinderでディレクトリのパスをコピーする方法
Windows のファイルエクスプローラではフォルダを表示したときに常に上の部分に現在のパスが表示されていますが、Mac の Finder ではそれが表示されていません。これを右クリックからコピーする方法を紹介します。
# Mac ではパスのコピーが面倒
# 右クリックメニューに「パスをコピーする」がない
Windows のファイルエクスプローラではフォルダを表示したときに常に上の部分に現在のパスが表示されていますが、Mac の Finder ではそれが表示されていません。
ここから例えばパスをコピーして、ターミナルに入力したりしようとすると、少し面倒なことになります
現在のバージョン(Big Sur)では、ファイルやディレクトリの右クリック(2 本指タップ)には「パスをコピー」といった項目はありません。
実は、ファイルを選択した場合は、option キーを押すとコンテキストメニューが変換されてパスをコピーできるようになります。
しかしディレクトリのパスをコピーすることはできません。上記のファイルパスコピーを使い、dirname
コマンドに渡せばディレクトリのパスを取得できますが、わざわざそれをやるのは面倒です。
今回は、その機能を Service Station というアプリで実装しました。
# Service Station を使うとメニューに機能を追加できる
Service Station は、右クリックのコンテキストメニューに機能を追加できるアプリです。
App Store からダウンロードできます。
なお、Service Station は、無料版では、機能追加数に制限があります。より多くの機能を追加する場合は課金が必要です。
こんな感じでメニューに項目を追加できます。
# Service Station 基本説明
# 初期設定
Service Station の画面はこんな感じです。
日本語化されてはいませんが、左側がルールの対象となるもの、右側が関連付けたいスクリプトです。
右クリックメニューの拡張には権限が必要なので、System Setup
タブのFinder Extension
から設定アプリへ飛び、Service Station の実行を許可しておきましょう。
# スクリプトを配置する
今回は、Folders
に自分で作成したスクリプトを設定します。
スクリプト置き場に制限があるので、確認しておきましょう。
System Setup
タブからOpen Application Scripts Directory
ボタンを押して飛べる先が専用のスクリプト置き場です。また、Sample Scripts
ボタンから飛べるディレクトリにはサンプルのスクリプトが保存されています。基本はこれを改造する形で開発すれば良いでしょう。
# Service Station でスクリプトを実行する
# パスをコピーするスクリプト
Sample Scripts
の中からShellScript.sh
をスクリプト置き場へコピーしましょう。そのままの名前でも良いですが、ここではcopy-path.sh
とリネームしました。当然ですが、拡張子は変えないようにしてください。
このファイルを開いて編集します。かんたんな修正なので、テキストエディットで開いてしまって良いと思います。
サンプルスクリプトは引数の使用方法を示してくれています。
targetURL
引数に現在のパスが入ってきているので、これ以外を扱う箇所は適当に消し、コピーするコマンドを追加します。
#!/bin/bash
TARGETED_URL=""
IFS=""
while [[ $# -gt 0 ]]; do
arg=$1
case $arg in
-targetedURL)
TARGETED_URL=$2 && shift && shift
;;
*)
SELECTED_ITEM_URLS+=($1) && shift
;;
esac
done
echo -n "${TARGETED_URL}" | pbcopy
exit 0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
これで完成です。Service Station に戻りましょう。
Service Station のRules
でFolders
が選択されている状態でMenu Items
の下の+をクリックし、さらにAdd script
をクリックしてください。スクリプト置き場のディレクトリが開かれるので、先ほど編集したcopy-path.sh
を選択します。
これで、ファインダーの適当な場所で右クリックしましょう。メニューにcopy-path
が追加されているはずです。実行すれば、現在のバスがクリップボードへコピーされます。
# 注意点
コピーしたパスへcd
したい場合、Application Support
のようにディレクトリ名にスペースを含む場合にはクォーテーションが必要になるので注意してください。
このユースケースが多い場合は、はじめからクォーテーションでくくったパスをコピーするスクリプトに変更しても良いと思います。
# 現在のディレクトリを直接ターミナルで開くスクリプト
単純に現在のディレクトリをターミナルで開きたいと言う場合は、Automator workflow を使ってしまうのも簡単です。
Sample Scripts
中から、workflow.workFlow
をスクリプト置き場へコピーしてください。ここではopen-in-terminal.workflow
とリネームしました。
右クリックから Automator で開いて編集します。こちらの場合は、既存の引数確認は使わないので全て削除してください。
今回はターミナルで開きたいので、一番上の「Finder 項目を開く」の「アプリケーションを開く」の部分を「ターミナル.app」に変更してください。
できたら保存し、Service Station から先程と同様にMenu Items
に追加します。
これを実行すると、ターミナルの新規ウィンドウが開き、現在のディレクトリが開かれます。
個人的には、ターミナルで現在のディレクトリを開きたいという場合、現在のウィンドウや新規タブを使いたいことが多く、このやり方はあまり合いませんでした。ただ、ターミナルのウインドウが分割できても問題ない方は、こちらの方が手順が早く楽かもしれません。
# まとめ
以上、右クリックから、現在のディレクトリを開いたりパスをコピーしたりする方法でした。
こういう機能がデフォルトで提供されていないのはちょっと足りない気がしますが、好きにハックできのは楽しい点でもあります。こういうことができるのが、開発を学んでいて良いところですね。
Service Station は、画像やテキストなど、他のファイルを対象としたスクリプトを作ることもできます。気になった方はお試しください。
今後もいろいろとオートメーションに取り組んでいきたいと思います。