Як створити символічне посилання на каталог із пробілом у ньому?


24

Я намагався створити символічне посилання за допомогою наступної команди:

ln -s "~/Foo Bar/" Foo

... але це не спрацювало (тобто коли я заходжу в пошук і намагаюся подвійним клацанням клацнути по ньому, він говорить про те, що він вказує на недійсний шлях і пропонує мені видалити псевдонім або виправити його). Мені довелося перейменувати папку, FooBarа потім виконати таку команду:

ln -s ~/FooBar/ Foo

Як я можу створити посилання без необхідності видаляти пробіл у імені папки?

Я шукаю спосіб зробити це в Терміналі, а не в інтерфейсі Finder.


1
Хоча Гордон Девіссон правий, ви повинні пам'ятати, що псевдоніми та символьні посилання (символьні посилання) різні. ln -sробить символьні посилання. Finder робить псевдоніми. Вони практично однакові в практичному, загальному використанні, але важливо визнати, що вони різні . Символьні посилання вказують на шлях до каталогу, тоді як псевдоніми вказують на файл. Якщо у вас є обидва вказівки на один і той же файл, і ви переміщуєте файл в іншу папку, а потім створюєте новий файл у старій папці, псевдонім буде вказувати на переміщений оригінал, а посилання символів - на новий файл.
CajunLuke

1
@Cajun: дякую за роз’яснення. Заплутано те, що шукач показує властивість "Kind" символічного посилання як "Псевдонім".
Чуйний

4
Завершення вкладок теж чудова річ, якщо ви повинні це зробити: ln -s ~/Foo<tab>(де <tab> позначає фактичну клавішу ⇥ (вкладка) на вашій клавіатурі), якщо є лише одна папка, яка починається з "Foo", ~тоді вона автоматично відбудеться розширити шлях до ~/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
Ви використовували повний шлях, а не ~помічник.
Джейсон Салаз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.