Как бы я ни пытался создать символическую ссылку, OS X отказывается подыгрывать и вместо этого создает псевдоним. Я пробовал несколько инструментов, а также через терминал с помощью ln
команды.
У меня новая установка, и ln
раньше эта команда работала нормально. Есть идеи, что случилось?
Спасибо, Уилл
Давайте проведем несколько экспериментов и посмотрим на некоторые вещи.
В эмуляторе терминала, таком как Terminal.app в /Applications/Utilities, перейдите в свой домашний каталог ( cd ~
) и создайте каталог ( mkdir [directory]
).
Убедитесь, что вы вошли в каталог, который мы только что создали ( cd [directory]
).
cd ~
mkdir directory
cd directory
После этого сделайте файл; подойдет простой текстовый файл:
echo "This is a simple text file" > originalfile.txt
ls -l@
Теперь попробуйте создать жесткую ссылку, например:
/usr/bin/ln originalfile.txt hardlink.txt
Затем попробуйте создать символическую ссылку, например:
/usr/bin/ln -s originalfile.txt symboliclink.txt
Теперь откройте каталог в Finder с помощью open .
и создайте псевдоним.
В эмуляторе терминала, который вы открывали ранее, другой ls
должен выдать нам это:
Testarossa:test tonyw$ ls -l@
total 2528
-rw-r--r-- 2 tonyw staff 19 25 Jan 15:51 file.txt
-rw-r--r--@ 1 tonyw staff 426048 25 Jan 15:52 file.txt alias
com.apple.FinderInfo 32
com.apple.ResourceFork 850686
-rw-r--r-- 2 tonyw staff 19 25 Jan 15:51 hard.txt
lrwxr-xr-x 1 tonyw staff 8 25 Jan 15:53 symbolic.txt -> file.txt
Графический интерфейс Finder также должен привести к этому:
Обратите внимание, что графический интерфейс Finder отображает символическую ссылку как псевдоним.
Символическая ссылка — это не то же самое, что псевдоним. Настоящий псевдоним имеет расширенные атрибуты, чем символическая ссылка.
В графическом интерфейсе Finder нет способа сказать, что жесткая ссылка является чем-то иным, кроме файла.
Для любых символических ссылок слева от атрибутов есть буква «l», и ls
команда сообщает нам, куда она указывает.
Когда вы попробуете это, что именно вы получите?
originalfile.txt
, вы создавали файл с одной жесткой ссылкой, а когда вы создавали hardlink.txt
, это была вторая жесткая ссылка на тот же файл. Невозможно (в поисковике, в командной строке или где-либо еще) сказать, какое имя было исходным, а какое «ссылкой». Они обе ссылки. Каждый файл имеет хотя бы одну жесткую ссылку.OS X может создавать и то, и другое, но по-разному. Поскольку вы, кажется, используете псевдоним слова, это ярлык файла (или каталога), который был создан в Finder для всего, что вы там видите, тогда как символическая ссылка (символическая ссылка) может быть создана в экземпляре оболочки, запущенном вашим терминальным приложением с помощью с помощью команды:
ln -s <source file path><target file path>
Символическая ссылка не может быть создана непосредственно в окне Finder (косвенно, возможно, путем вызова сценария AppleScript из сценария оболочки или наоборот).
Но здесь есть некоторая двусмысленность, потому что существует другой тип псевдонима, который представляет собой определяемый пользователем псевдоним, который вы можете присвоить последовательности команд оболочки при открытии сеанса терминала. Например, в окне оболочки bash:
$ alias listall=ls -al`
Это определяет псевдоним listall
для команды ls -al
для вывода списка всех файлов в текущем каталоге. В этом контексте «псевдоним» описывает псевдонимы команд — alias
на самом деле это встроенная команда оболочки bash для создания таких псевдонимов.
Я не эксперт по файловой системе OS X, просто пользователь и сценарист, но из того, что я прочитал, причина, по которой псевдоним Finder не ломается в OS X, заключается в том, что он содержит уникальный серийный номер для своего целевого файла (называемого номер inode, существующий для каждого файла и каталога), который не зависит от пути к файлу. Это означает, что если вы переместите цель в другой каталог, псевдоним по-прежнему будет указывать на нее, тогда как символическая ссылка не работает, потому что она использует путь к файлу цели.
Вы не можете изначально создавать символические ссылки (символические ссылки) в Finder , только псевдонимы. Однако вы можете использовать AppleScript для создания символических ссылок , если это то, что вам в конечном итоге нужно.
Чтобы понять, почему это так, мы должны понять разницу между псевдонимами, символическими ссылками и жесткими ссылками:
Псевдонимы - это соглашения Finder ; это означает, что они работают только в Finder, а не в среде UNIX OS X. Это небольшие файлы данных, и ваша оболочка (bash, sh, zsh и т. д.) не знает, как их интерпретировать.
Символические ссылки (символические ссылки для краткости) — это ярлыки , являющиеся частью файловой системы *NIX. Finder рассматривает их как квази-псевдонимы, вы можете их видеть и использовать, но они не содержат никаких дополнительных метаданных, которые содержат псевдонимы Finder.
Жесткие ссылки очень похожи на псевдонимы в Finder, за исключением того, что они не содержат путь к исходному файлу. Жесткие ссылки отображаются в Finder как обычные файлы; вы не будете знать, что работаете не с исходным файлом, а со связанным. Жесткие ссылки — это то, что ln
создается по умолчанию, когда вы опускаете -s
флаг.
Для получения дополнительной информации я написал об этом более подробно в этом ответе .
Суть в том, что вы сможете создавать символические ссылки и жесткие ссылки только в Терминале (среда UNIX OS X), но использовать их глобально. Вы сможете создавать и использовать псевдонимы только в Finder. (IMO) Из-за этого я держусь подальше от псевдонимов и использую исключительно символические ссылки.
У меня была эта проблема. Пробовал сохранить ссылку в другую папку. Путем проб и ошибок получилось. Не знаю, почему.
Матье Риглер
пользователь68523
ln -s <source> <dest>
такие инструменты, как: seiryu.home.comcast.net/~seiryu/symboliclinker.htmlмммммм
пользователь68523
этос67
ln
это действительно такln
. В терминале выполните,type ln
чтобы убедиться, что это/bin/ln
.ТомасВ