İçinde boşluk olan bir dizine sembolik bir bağlantı nasıl oluşturabilirim?


24

Aşağıdaki komutu kullanarak sembolik bir bağlantı oluşturmaya çalışıyordum:

ln -s "~/Foo Bar/" Foo

... ancak işe yaramadı (yani bulucuya girip çift tıklamayı denediğimde geçersiz bir yola işaret ettiğini ve takma adı silmemi ya da düzeltmemi istediğimi söylüyor). Klasörü yeniden adlandırmalı FooBarve aşağıdaki komutu çalıştırmalıydım:

ln -s ~/FooBar/ Foo

Klasörün adından boşluğu kaldırmak zorunda kalmadan bağlantıyı nasıl oluşturabilirim?

Bunu Terminal'de yapmanın ve Finder's UI'de yapmanın bir yolunu arıyorum.


1
Gordon Davisson haklı olsa da, takma adların ve sembolik bağların (sembolik bağlantıların) farklı olduğunu unutmayın. ln -ssembolik bağlantılar yapar. Finder takma isimler yapar. Pratik, ortak kullanımda neredeyse aynılar, ancak farklı olduklarını bilmek önemlidir . Symlinks bir dizin yolunu, diğer isimler ise bir dosyayı işaret eder. Her ikisinde de aynı dosyayı gösteriyorsanız ve dosyayı farklı bir klasöre taşıyorsanız, eski klasörde yeni bir dosya oluşturun, takma ad taşınan orijinali işaret eder ve sembolik bağlantı yeni dosyayı gösterir.
CajunLuke

1
@Cajun: açıklama için teşekkürler. Bulucunun sembolik bir bağlantının "Kind" özelliğini "Alias" olarak göstermesi kafa karıştırıcıdır.
Hisse

4
Tab tamamlama da harika bir şey, eğer bunu yapacaksanız: ln -s ~/Foo<tab>(klavyenizdeki <tab> ⇥ (tab) tuşunu gösterir), "Foo" ile başlayan tek bir klasör varsa ~otomatik olarak yolunu genişlet ~/Foo\ Bar/.
Jason Salaz

Yanıtlar:


41

Alıntı işaretleri, ~ana klasörünüze genişletilmesini engelliyor , bu nedenle içinde sadece boşluk olan kısmı alıntılamanız gerekiyor:

ln -s ~/"Foo Bar/" Foo

Not: tam olarak ne kadar alıntı yapıldığı, boşluk alıntı yapılan ve ~ / olmadığı sürece önemlidir. ~/Foo" "Bar/, ~/"Foo Bar"/, ~/Fo"o B"ar/Vb tüm eşdeğerdir. Ayrıca, tek ve çift tırnak, boşluklar üzerinde aynı etkiye sahiptir (diğer karakterlerde farklı olsalar da) ~/'Foo Bar/', ~/Foo' 'Bar/vb. De işe yarayabilir.

Ayrıca, alanın ayırıcı olarak değerlendirilmesini önlemek için bir kaçış kullanabilirsiniz:

ln -s ~/Foo\ Bar/ Foo

5
SADECE mekandan alıntı yapabilir misin? Bu harika!
Jason Salaz

Veya "$HOME/Foo Bar/".
wchargin

@ wchargin İşe yarayacak. Ana dizininizde boşluk veya başka garip karakterler varsa, karışıklığı önlemek için aksine ~, çift ​​tırnak içinde $HOME olması gerektiğini unutmayın . "$HOME/Foo Bar/"(Eğer önermek gibi), "$HOME"/Foo" "Bar/, "$HOME"/Foo\ Bar/, vb çalışacaktır.
Gordon Davisson

0

Kendim test ettim. İçinde boşluk olan bir sorunum yok:

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

ls gösterir: $ linkToFoo_Bar -> /Users/joe/test/foo bar/ ve terminal ve bulucuda sorunsuz çalışır.


10
Tam yolu kullandın, ~yardımcı değil .
Jason Salaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.