Bagaimana cara membuat tautan simbolis ke direktori dengan spasi di dalamnya?

24

Saya mencoba membuat tautan simbolis menggunakan perintah berikut:

ln -s "~/Foo Bar/" Foo

... tetapi tidak berhasil (yaitu ketika saya pergi ke finder dan mencoba mengklik dua kali, itu mengatakan bahwa itu menunjuk ke jalur yang tidak valid dan meminta saya untuk menghapus alias atau memperbaikinya). Saya harus mengganti nama folder FooBardan kemudian menjalankan perintah berikut:

ln -s ~/FooBar/ Foo

Bagaimana saya bisa membuat tautan tanpa harus menghapus ruang dari nama folder?

Saya mencari cara untuk melakukan ini di Terminal dan bukan di UI Finder's.

Masuk akal
sumber
1
Meskipun Gordon Davisson benar, Anda harus menyadari bahwa alias dan tautan simbolik (symlink) berbeda. ln -smembuat symlink. Finder membuat alias. Mereka hampir identik dalam penggunaan praktis dan umum, tetapi penting untuk mengenali bahwa mereka berbeda . Symlink menunjuk ke jalur direktori, sedangkan alias menunjuk ke file. Jika Anda berdua menunjuk ke file yang sama dan Anda memindahkan file ke folder yang berbeda, lalu membuat file baru di folder lama, alias akan menunjuk ke dokumen asli yang dipindahkan dan symlink akan menunjuk ke file baru.
CajunLuke
1
@Cajun: terima kasih atas klarifikasi. Sangat membingungkan bahwa pencari menunjukkan properti "Jenis" tautan simbolis sebagai "Alias".
Senseful
4
Penyelesaian tab juga merupakan hal yang luar biasa, jika Anda melakukan ini: ln -s ~/Foo<tab>(di mana <tab> menunjukkan tombol ⇥ (tab) yang sebenarnya pada keyboard Anda), jika hanya ada satu folder yang dimulai dengan "Foo" di dalam ~maka itu akan secara otomatis perluas jalur ke ~/Foo\ Bar/.
Jason Salaz

Jawaban:

41

Tanda kutip mencegah ~diperluas ke folder rumah Anda, jadi Anda perlu mengutip bagian dengan ruang di dalamnya:

ln -s ~/"Foo Bar/" Foo

Catatan: tepat berapa banyak yang dikutip tidak masalah, asalkan spasi ada di bagian yang dikutip dan ~ / tidak. ~/Foo" "Bar/, ~/"Foo Bar"/, ~/Fo"o B"ar/Dll semua setara. Juga, tanda kutip tunggal dan ganda memiliki efek yang sama pada spasi (meskipun mereka berbeda pada karakter lain), jadi ~/'Foo Bar/', ~/Foo' 'Bar/dll juga akan berfungsi.

Anda juga bisa menggunakan pelarian untuk mencegah ruang diperlakukan sebagai pemisah:

ln -s ~/Foo\ Bar/ Foo
Gordon Davisson
sumber
5
Anda dapat dengan serius mengutip ruang saja? Itu luar biasa!
Jason Salaz
Atau "$HOME/Foo Bar/".
wchargin
@wchargin Itu akan berhasil. Perhatikan bahwa tidak seperti itu ~, $HOME harus dalam tanda kutip ganda untuk mencegah kebingungan jika direktori home Anda berisi spasi atau karakter aneh lainnya. "$HOME/Foo Bar/"(seperti yang Anda sarankan), "$HOME"/Foo" "Bar/, "$HOME"/Foo\ Bar/, dll akan bekerja.
Gordon Davisson
0

Saya mengujinya sendiri. Saya tidak punya masalah dengan ruang di dalamnya:

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

Ini menunjukkan: $ linkToFoo_Bar -> /Users/joe/test/foo bar/ dan berfungsi di terminal dan finder tanpa masalah.


sumber
10
Anda menggunakan path lengkap, bukan ~helper.
Jason Salaz