タイトルで完結してるんですが、補足などを。
Finderからファイルの絶対パスを取得したかった
探したらこんなのが見つかりました。
で、CNETの方の記事でFinderからTerminalにドラッグアンドドロップで絶対パスを取得できる、って書いてあったので、普通にコピペしたらどうなるのか?と思ってやってみたら期待通り動いたのでした。
ペーストした時の絶対パスの形式について
シェルの入力としてエスケープされた状態でコピペされます。
つまり例えば以下の様なファイルがあった時
$ ls '/Users/takc923/hoge fuga ? #'
/Users/takc923/hoge fuga ? #
Finderでコピーしてターミナルにペーストするとこうなります
$ /Users/takc923/hoge\ fuga\ \?\ \#
空白等がエスケープされます。これはペーストするときシングルクォーテーションで囲った場所へペーストしたとしても同様です。
$ '/Users/takc923/hoge\ fuga\ \?\ \#'
ちなみにzshで以下の設定をしてあると、URLを自動でエスケープしてくれるんですが、ファインダでコピー&ペーストした時のエスケープも似たような仕組みかな?と思ったので上記のような検証しました。
autoload -U url-quote-magic
zle -N self-insert url-quote-magic
エスケープされてない絶対パスが欲しい場合
- ファイルを右クリック→情報を見る→「一般情報」の「場所」と、「名前と拡張子」をそれぞれコピーして組み合わせる
- shift+command+gで絶対パス指定でディレクトリ移動するフォームを呼び出して、そのフォームに目当てのファイルをドラッグアンドドロップ
- Automatorでサービスを作る
あたりの方法があるようです。詳細は参考URLのページ参照。
個人的には絶対パスが必要なのってターミナルで何かしらしたい時なので、エスケープされてない絶対パスが必要なことがあんまりないです。
その他補足
- 動作はOSX10.9.5のFinder, Terminal, iTerm2, zsh, bashで確認してます。