Macでパスのコピーを取る|Finderから端末へ持っていく

mac パス の コピーを調べる人が求めているのは、ファイルの場所を文字列として取り出して、別の場所に貼り付ける手順です。Finderはファイルの場所を画面に出さない作りなので、パスを使う作業のたびに探し直すことになりがちです。この記事では、Finderからパスを取る3つの道と、取ったパスが貼り付け先で通らないときに見る場所、そして端末側からパスをクリップボードに入れる手順を整理します。

パスが要る場面は2つあり、必要な形が違う

パスをコピーしたい場面は、大きく2つに分かれます。1つはターミナルやスクリプトに渡す場合で、もう1つは人に場所を伝える場合です。

ターミナルに渡すなら、空白や記号がそのまま解釈されない形になっている必要があります。人に伝えるなら、読める形であることが優先で、エスケープの記号が入っていると読みにくくなります。同じファイルでも、この2つで欲しい文字列は違います。

端末での作業でパスが要る事情については、次のように整理されています。

ターミナルを使用する方は、ファイルのフルパスの記入が必要な時がありますよね。そんな時は下記のショートカットキーで、ファイルパスを1クリックでコピーすることが可能です。 出典: tcd-theme.com

同じ記事では、Finderの上ではファイルのパスが表示されないため、たまに使うファイルやフォルダを探すのに時間がかかることが、出発点として挙げられています。表示されていないものを毎回探すという構造が、手順を覚える価値を作っています。

Finderからパスを取る3つの道

Finderの側から取る方法は3つあり、用途で使い分けます。

1つ目が、メニューからの取得です。対象を選んだ状態で編集のメニューを開き、optionキーを押したままにすると、コピーの項目が次の名前に変わります。

「パス名をコピー」

これを選ぶと、そのファイルの絶対パスがクリップボードに入ります。右クリックのメニューでも同じことができ、こちらはoptionキーを押すと項目名がファイル名を含む形に変わります。複数を選んでいる場合は選んだ件数を含む名前になり、選んだ分のパスがまとめて入ります。10個のファイルのパスを一度に取り出したいときは、この形がいちばん短い手順です。

2つ目が、パスバーの表示です。Finderのウインドウの下に、いま見ている場所の階層を出せます。表示のメニューにある項目の名前は、状態に応じて「パスバーを表示」と「パスバーを非表示」に切り替わります。キーボードからは、optionとcommandを押しながらPを打つと切り替わります。パスバーに出ている項目は上の階層への移動にも使えるため、パスを取る目的だけでなく、いまどこにいるのかを常に見えるようにする用途でも役に立ちます。

3つ目が、ターミナルへのドラッグです。ターミナルのウインドウにファイルやフォルダをドラッグして落とすと、その場所のパスが入力行に挿入されます。空白を含む名前は、空白の前に記号が足された形で入るため、そのままコマンドの引数として使えます。コマンドを打ちかけた状態で対象だけを付け加えたいときは、この方法が最も速くなります。

逆方向、パスからFinderを開く手順も覚えておく

パスを取る話と対になるのが、パスからその場所を開く話です。こちらもFinderに用意されています。

Finderで移動のメニューを開くと「フォルダへ移動…」という項目があり、キーボードからはcommandとshiftを押しながらGで開きます。Appleの説明では、この操作で「フォルダへ移動」のウインドウが開くとされています。ここにパスを貼り付けると、その場所に移動します。

この2つを組み合わせると、端末で見つけた場所をFinderで開く、Finderで選んだものを端末に渡す、という往復が両方向でできるようになります。片方だけ覚えていると、逆向きのときに階層を手で辿ることになります。

ターミナル側から開く道もあります。Finderで対象のフォルダを選び、サービスのメニューを見ると次の項目が並びます。

  • 新規ターミナルでフォルダに移動
  • 新規ターミナルタブでフォルダに移動

前者は新しいウインドウ、後者は新しいタブで、そのフォルダを現在の場所として開きます。パスをコピーしてcdを打つ手順を、1回の選択に置き換えられます。

端末側からパスをクリップボードに入れる

端末で作業していて、いまいる場所のパスを別の場所に貼りたい場合は、クリップボードを扱うコマンドを使います。

pwd | pbcopy

pwdは、いまいる場所の絶対パスを標準出力に書きます。pbcopyは標準入力を受け取ってクリップボードに入れるコマンドで、指定しなければ通常のクリップボードが使われます。この2つを繋ぐと、いまいる場所が貼り付けられる状態になります。

pwdには2つの動きがあります。オプションを付けない場合は、たどってきた道筋どおりのパスを返します。Pを付けると、シンボリックリンクをすべて解決した実際の場所を返します。リンクを経由して入ったフォルダで作業しているとき、この2つは違う文字列になります。人に場所を伝えるならリンクを解決した側、自分の作業手順を再現したいならたどった側が向きます。

ファイル1つのパスを解決したい場合は、専用のコマンドがあります。

realpath ./report.pdf | pbcopy

realpathは、シンボリックリンクと、余分なスラッシュと、途中に混ざった1つ上への参照をすべて解決した形を返します。相対パスを絶対パスに直す用途でも使えます。

文字の扱いについて1点だけ注意があります。pbcopyは入出力の文字コードを環境の設定から決める作りで、UTF-8を使うことが推奨されています。ターミナルは既定でUTF-8を使い、必要な設定を自動で入れるため、通常は気にせずに済みます。設定を自分で書き換えている環境では、日本語を含むパスが崩れることがあります。

複数のパスを一覧としてまとめて取り出す

1つずつではなく、条件に合うファイルのパスをまとめて欲しい場面があります。特定の拡張子だけ、更新日が新しいものだけ、といった絞り込みが入るときは、Finderで選ぶより端末側で作ったほうが正確です。

find ~/Documents -name "*.pdf" -type f | pbcopy

findは指定した場所の下を辿り、条件に合うものを1行ずつ出します。nameで名前の形を指定し、typeでファイルだけに絞ります。その出力をそのままクリップボードに渡せば、1行1件のパスの一覧が貼り付けられる状態になります。

件数が多いときは、貼り付ける前に何件あるかを数えておくと安心です。

find ~/Documents -name "*.pdf" -type f | wc -l

wcにlを付けると行数だけが返ります。想定と桁が違うなら、絞り込みの条件を見直してから本番の操作に移ります。この一覧は、そのまま別のコマンドに渡す材料にもなりますし、作業の記録として残す用途にも使えます。

Finderで選んで「パス名をコピー」を使う道と、端末で条件を書いて作る道は、どちらが優れているというものではありません。目で見て選ぶほうが確かな場面と、条件で機械的に絞るほうが確かな場面が、作業によって入れ替わります。判断の目安は、選ぶ基準を言葉で書けるかどうかです。書けるなら端末側、書けないなら目で選ぶ側になります。

貼り付けたパスが通らないときに見る3点

コピーはできたのに、貼り付けた先で通らないことがあります。原因はだいたい次の3つです。

症状 原因 直し方
コマンドが途中で切れて認識される 名前に空白が入っている 全体を引用符で囲むか、空白の前に記号を付ける
そのファイルは無いと言われる チルダが展開されていない ホームの場所を絶対パスで書き直す
括弧やアポストロフィで止まる シェルが記号として解釈している 単一引用符で全体を囲む

いちばん多いのが1つ目です。Finderの「パス名をコピー」で取れる文字列は、人が読む形の絶対パスで、空白の前に記号は入りません。これをそのままターミナルに貼ると、空白の位置で別の引数として扱われます。ターミナルへのドラッグで取ると記号が入った形になるのは、この違いによるものです。

2つ目は、貼り付け先がシェルではない場合に起きます。設定ファイルやアプリの入力欄にチルダを含むパスを書くと、そのままの文字として扱われることがあります。シェル以外に渡す文字列は、ホームの場所を展開した絶対パスにしておくのが安全です。

長さについても上限があります。Finderは、パスが長すぎて扱えないときに、その理由を明示した案内を出します。階層を深く掘った場所で名前の長いファイルを扱っていると、この上限に当たります。階層の途中にリンクを作って短い道を用意するか、保存先の設計を見直す判断になります。

絶対パスと相対パスを、使う相手で切り替える

取り出す形をもう1段決めておくと、貼り付けた後の手直しが減ります。

絶対パスは、どこから実行しても同じ場所を指します。1回きりの作業、人への連絡、設定ファイルへの記入に向きます。相対パスは、いまいる場所を起点にします。複数の環境で同じ手順を動かす場合、他の人と共有するスクリプトの中では、こちらのほうが持ち運べます。

判断の目安は、その文字列が誰の手元で使われるかです。自分の手元だけで今日使うなら絶対パス、別のMacでも動く必要があるなら相対パスにして、起点となる場所をスクリプトの先頭で決めます。ホームの中の場所を書くなら、絶対パスをそのまま埋めずに、ホームを表す変数から組み立てる形にすると、利用者名が違う環境でも通ります。

人に場所を伝える場合は、もう1段の判断が入ります。相手が同じ組織で同じ共有フォルダを使っているなら、共有の入口から下の部分だけを書いたほうが伝わります。相手の手元にホームの場所があるとは限らないため、自分のホーム以下の絶対パスをそのまま送ると、相手はその文字列を読み替える作業から始めることになります。どこを起点にした場所なのかを1行添えるだけで、この読み替えは消えます。

クラウドの同期フォルダを挟む場合は、同じファイルでも手元のパスが人によって違います。この場合は文字列としてのパスを送るより、共有のリンクを渡すか、フォルダ名の並びだけを伝えるほうが確実です。パスをコピーする手段を覚えたうえで、パスを送らない判断ができると、やり取りの往復が減ります。

探す窓と打つ窓が分かれているから、パスをコピーする作業が生まれる

そもそもパスをコピーするという作業は、ファイルを探す場所とコマンドを打つ場所が別だから発生します。Finderで見つけた物を、文字列に直して、端末に運ぶ。この運搬は作業の成果を何も生みませんが、1日に何度も起きます。

フォルダとターミナルとAIが同じ窓にある状態なら、いま見ているフォルダがそのまま端末の現在の場所になり、選んでいるファイルをそのまま引数として扱えます。パスの文字列を経由する必要が減るため、空白のエスケープで止まる場面も減ります。

道具の側で何ができるかはできることに整理されています。Finderや他のファイル管理との違いを並べたものは他のファイル管理との比較にあり、外出先のiPhoneから手元のMacの作業を確かめる使い方はiPhone・iPadから続きをにまとまっています。費用の目安は料金、判断に迷いやすい点はよくある質問、日本語以外の環境で使う場合は対応言語を見てください。

まず入れるべき習慣は1つです。パスバーを常に表示にしておく。いまどこにいるのかが画面に出ていれば、パスを取る前に階層を辿り直す手間が消え、コピーした文字列が想定と違っていたことにもその場で気付けます。

よくある質問

Finderでファイルのパスをコピーする一番速い方法はどれですか?

対象を選んだ状態で編集のメニューを開き、optionキーを押すとコピーの項目が「パス名をコピー」に変わります。右クリックのメニューでも同じ操作ができます。複数のファイルを選んでいる場合は選んだ件数を含む名前に変わり、まとめてパスが取れます。

コピーしたパスをターミナルに貼ると途中で切れてしまいます。

名前に空白が入っているためです。Finderから取れるパスは人が読む形なので、空白の前に記号が入りません。全体を引用符で囲むか、ファイルをターミナルのウインドウにドラッグして落とす形に替えると、記号が入った状態で挿入されます。

逆に、パスの文字列からその場所をFinderで開けますか?

開けます。Finderで移動のメニューにある「フォルダへ移動…」を選ぶか、commandとshiftを押しながらGを打つとウインドウが開き、そこにパスを貼り付けると移動します。階層を手で辿るより速く、端末で見つけた場所を画面側で確かめたいときに使えます。

ターミナルで今いる場所のパスをクリップボードに入れる方法はありますか?

pwd の出力を pbcopy に渡すと入ります。シンボリックリンクを経由して入ったフォルダでは、pwd にPを付けると実際の場所が返り、付けないとたどってきた道筋が返ります。人に場所を伝えるなら前者、自分の手順を再現するなら後者が向きます。

記事一覧へ戻る