Как заметил @ john1024, опечатка в вопросе OP может быть сутью вопроса:
ln -s ~/.../gremlin ~/sc/gremlin
Хотя некоторые приложения учитывают тройные точки, Файловые системы Unix этого не делают. Ваша оболочка расширяет ~
(тильда), а не ln
, поэтому
ln -s ~/../gremlin ~/sc/gremlin
расширяет имя пути, как ожидалось. Если ссылка уже существует, вы можете перезаписать ее с помощью параметра -f
. Однако, если целью является реальный файл, опция -f
автоматически перезапишет файл символьной ссылкой. Возможно, вы захотите использовать параметр -i
, который, по крайней мере, сообщает вам, что что-то уже есть.
Если вы хотите проверить ссылку (доказать, что она указывает на файл), полезна опция -L
для ls
:
ls -lL ~/sc/gremlin
Если это не файл , ls
будет (в зависимости от реализации) отобразить только l
для типа (первый символ списка) с вопросительными знаками для битов прав доступа) или другое указание на то, что он не указывает на настоящий файл (в этом случае OSX просто отказывается показывать что-либо, хотя в сумме учитывает размер символической ссылки).
Дополнительная литература: