スペースを含むディレクトリへのシンボリックリンクを作成するにはどうすればよいですか?


24

次のコマンドを使用してシンボリックリンクを作成しようとしました。

ln -s "~/Foo Bar/" Foo

...しかし、うまくいきませんでした(つまり、ファインダーを開いてダブルクリックしようとすると、無効なパスを指していると表示され、エイリアスを削除するか修正するように求められます)。フォルダーの名前を変更してからFooBar、次のコマンドを実行する必要がありました。

ln -s ~/FooBar/ Foo

フォルダの名前からスペースを削除せずにリンクを作成するにはどうすればよいですか?

FinderのUIではなく、ターミナルでこれを行う方法を探しています。


1
Gordon Davissonは正しいですが、エイリアスとシンボリックリンク(シンボリックリンク)は異なることに注意してください。ln -sシンボリックリンクを作成します。Finderはエイリアスを作成します。実用的で一般的な使用法ではほとんど同じですが、異なることを認識することが重要です。シンボリックリンクはディレクトリパスを指し、エイリアスはファイルを指します。両方が同じファイルを指していて、そのファイルを別のフォルダーに移動してから、古いフォルダーに新しいファイルを作成すると、エイリアスは移動した元のファイルを指し、シンボリックリンクは新しいファイルを指します。
CajunLuke

1
@Cajun:説明をありがとう。finderがシンボリックリンクの「Kind」プロパティを「Alias」として表示するのは紛らわしいです。
賢明な

4
タブ補完はこれを行う場合も素晴らしいことです:ln -s ~/Foo<tab>(<tab>はキーボードの実際の⇥(タブ)キーを表します)、「Foo」で始まるフォルダーが1つしかない場合~は自動的にパスをに展開します~/Foo\ Bar/
ジェイソンサラズ

回答:


41

引用符は~ホームフォルダーへの展開を妨げているため、スペースを含む部分のみを引用する必要があります。

ln -s ~/"Foo Bar/" Foo

注:引用符で囲まれた部分にスペースがあり、〜/が含まれていない限り、引用符で囲まれた正確な量は関係ありません。~/Foo" "Bar/~/"Foo Bar"/~/Fo"o B"ar/などはすべて同じです。また、単一引用符と二重引用符はスペースに対して同じ効果を持ちます(ただし、他の文字は異なります)ので~/'Foo Bar/'~/Foo' 'Bar/なども機能します。

エスケープを使用して、スペースが区切り文字として扱われないようにすることもできます。

ln -s ~/Foo\ Bar/ Foo

5
スペースを真剣に引用できますか?すごい!
ジェイソンサラズ

または"$HOME/Foo Bar/"
wchargin

@wchargin動作します。ホームディレクトリにスペースやその他の奇妙な文字が含まれている場合、混乱を防ぐため、とは異なり~、二重引用符で囲む$HOME 必要があります。"$HOME/Foo Bar/"(あなたが示唆される)、 、"$HOME"/Foo" "Bar/"$HOME"/Foo\ Bar/などが動作します。
ゴードンデイヴィ

0

自分でテストしました。私はその中のスペースに問題はありません:

    $ ln -s "/Users/joe/test/foo bar"/ linkToFoo_Bar

lsは以下$ linkToFoo_Bar -> /Users/joe/test/foo bar/ を表示します。 端末およびファインダーで問題なく動作します。


10
~ヘルパーではなくフルパスを使用しました。
ジェイソンサラズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.