El capitan 10.11.1
Terminal.app
iTerm2.app
動機
iTerm2.appでディレクトリを移動したい時などに、Finderでファイルパスをコピー&ペーストで行おうとした時に、No such file or directory
とエラーとなってしまうことで、いろいろ調べてみた。
原因
ディレクトリネームにスペースがあることでエラーとなることが判明。
例
% cd /Users/Home/Desktop/Test Dir
% cd Volumes/Macintosh HD2/TestDir
対処方法
スペースの前に \
バックスラッシュや、パスを " "
で囲むことで認識されるようになることが解った。
ターミナル.appの場合
1.通常の ⌘v
でパスをペースト
% cd /Volumes/Macintosh HD2/TestDir
その後で、
% cd "/Volumes/Macintosh HD2/TestDir"
か、
% cd "/Volumes/Macintosh\ HD2/TestDir
と、手動で追加する。
2.メニュー⇨編集⇨「テキストをエスケープしてペースト」で選択する方法と、control+command+v
ショートカットキーでペーストする方法。
% cd /Volumes/Macintosh\ HD2/TestDir
上記の例のように、スペースの前にエスケープとしてバックスラッシュが追加された状態でペーストされます。
参考サイト
「ターミナル」で空白文字を含むディレクトリやファイルを扱うときに便利な小技
iTerm2.appの場合
iTerm2.appでは「テキストをエスケープしてペースト」での方法を見つけることができなかったのと、control+command+v
でのペーストにも対応していない、手動で訂正するのも合理的じゃない気がする、なんとかターミナル.appのように一発でペーストがしたいという気持ちのまま、下記のサイトを参考にしてみた。
参考サイト
MacOSX - FinderでファイルをコピーしてからTerminalにペーストすると絶対パスがペーストされる - Qiita
上記サイトで紹介していたzshの設定で、URLを自動でエスケープしてくれるという
autoload -U url-quote-magic
zle -N self-insert url-quote-magic
を、.zshrcに設定して試してみましたが、設定方法を間違ってしまったのかうまくいきませんでした。
偶発的な起こり
iTerm2.appでなんとか方法はないものかとあれこれ試していた時、option+command+v
で、スペースの前にバックスラッシュが入った状態でペーストされました。
やっと方法を見つけたぞ! よっしゃー!
まとめ
改めて、ファイルネームやホルダーネームにはスペースは使わない方が良いと思ったのと、
多分みんな知っているのかなと思いつつも、いくらググっても見つけることができずいたのが、対応できる方法が見つかり解決できたのが良かったと思い安堵してます。