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.


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

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.


10
Anda menggunakan path lengkap, bukan ~helper.
Jason Salaz
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.