Как создать символическую ссылку на каталог с пробелом в нем?

Я пытался создать символическую ссылку, используя следующую команду:

ln -s "~/Foo Bar/" Foo

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

ln -s ~/FooBar/ Foo

Как я могу создать ссылку, не удаляя пробел из имени папки?

Я ищу способ сделать это в Терминале, а не в пользовательском интерфейсе Finder.

Хотя Гордон Дэвиссон прав, вы должны знать, что псевдонимы и символические ссылки (симлинки) — это разные вещи. ln -sделает симлинки. Finder создает псевдонимы. Они почти идентичны в практическом, обычном использовании, но важно понимать, что они разные . Символические ссылки указывают на путь к каталогу, а псевдонимы указывают на файл. Если у вас оба указывают на один и тот же файл, и вы перемещаете файл в другую папку, затем создайте новый файл в старой папке, псевдоним будет указывать на перемещенный оригинал, а символическая ссылка будет указывать на новый файл.
@Cajun: спасибо за разъяснение. Сбивает с толку то, что средство поиска показывает свойство «Вид» символической ссылки как «Псевдоним».
Завершение с помощью табуляции — тоже замечательная вещь, если бы вы сделали это: ln -s ~/Foo<tab>(где <tab> обозначает фактическую клавишу ⇥ (tab) на вашей клавиатуре), если есть только одна папка, которая начинается с «Foo» ~, тогда она будет автоматически расширить путь к ~/Foo\ Bar/.

Ответы (2)

Кавычки не позволяют ~расширить вашу домашнюю папку, поэтому вам нужно либо указать только ту часть, в которой есть пробел:

ln -s ~/"Foo Bar/" Foo

Примечание: не имеет значения, сколько именно указано в кавычках, если в кавычках есть пробел, а ~/ нет. ~/Foo" "Bar/, ~/"Foo Bar"/, и ~/Fo"o B"ar/т. д. все эквивалентны. Кроме того, одинарные и двойные кавычки имеют одинаковый эффект для пробелов (хотя они различаются для других символов), поэтому ~/'Foo Bar/'и ~/Foo' 'Bar/т. д. также будут работать.

Вы также можете использовать побег, чтобы пробел не рассматривался как разделитель:

ln -s ~/Foo\ Bar/ Foo
Вы можете серьезно цитировать ТОЛЬКО пробел? Это потрясающе!
Или "$HOME/Foo Bar/".
@wchargin Это сработает. Обратите внимание, что, в отличие от ~, $HOME должен быть заключен в двойные кавычки, чтобы избежать путаницы, если ваш домашний каталог содержит пробелы или другие странные символы. "$HOME/Foo Bar/"(как вы предлагаете), "$HOME"/Foo" "Bar/, "$HOME"/Foo\ Bar/и т. д. будут работать.

Я проверил это на себе. У меня нет проблем с пробелом в нем:

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

ls показывает: $ linkToFoo_Bar -> /Users/joe/test/foo bar/и он работает в терминале и поиске без проблем.

Вы использовали полный путь, а не ~помощник.