Як змінити симпосилання в OS X?


21

Як змінити місце, на яке вказує символьне посилання, не видаляючи і не створюючи нове (з ln -s "/path/to/point/to" "/path/where/symlink/is")?

Коли я спробував це зробити на символьному посиланні Java "Поточне", Java навіть не працювала (принаймні, з командного рядка сказала "Помилка сегментації"), але повернулася до нормального стану, коли я відновила старе "Поточне" посилання з Time Машина (але пізніше я з’ясував, що мені /Applications/Utilities/Java Preferences.appвсе-таки варто скористатися, щоб змінити поточну версію Java).

Відповіді:


8
mkdir /path/where/newsymlink
ln -s /path/to/point/to /path/where/newsymlink/is
mv /path/where/newsymlink/is /path/where/symlink/
rmdir /path/where/newsymlink

Однак утиліта налаштування Java змінює більше, ніж просто символічне посилання; ви повинні використовувати це для того, щоб гарантувати зміну версії Java.


не вдалося б команда mv просто перейменувати її?
mk12

.. Я спробував це, він намагається перенести нове посилання в папку, на яку вказує стара.
mk12

Перша команда робить символьне посилання, яке вказує куди ви хочете, а друга команда замінює існуючий вказівник на старе місце вказівником на нове місце. Mv є атомним, тому симпосилання завжди буде існувати.
mark4o

.. Але це все ще не працює .. він переміщує новий покажчик у папку, на яку вказує стара.
mk12

/path/where/symlink/isце симпосилання, яке ви змінюєте. Використання цих команд змінить його на вказівку /path/to/point/to. Папка, на яку вказує оригінальне символьне посилання, зовсім не торкається.
mark4o

30
ln -hfs newlocation existinglink

або

ln -nfs newlocation existinglink

змінить існуюче посилання, щоб вказати на нове місцеположення

(-n і -h однакові в роботі)

Від 'man ln'

-h Якщо target_file або target_dir є символічним посиланням, не слідкуйте за ним. Це найбільш корисно з опцією -f, щоб замінити символьне посилання, яке може вказувати на каталог.

-f Якщо цільовий файл вже існує, від’єднайте його, щоб відбулося посилання. (Опція -f перекриває будь-які попередні варіанти -i.)

-s Створити символічне посилання


-nfsВерсія працює також на Linux, так що це більш портативними , якщо хто -то піклується.
Cromax

10

Спробуйте:

unlink /path/to/current/link
ln -s /path/to/target /path/to/symbolic/link

1
В кінці 2013 року MacBook Pro з Mavericks мені довелося переключити два параметри: ln -s / path / to / symbolic / link / path / to / target
Marius Waldal

1

Команда ln не дозволяє змінювати посилання, лише створює нові.


0

Ви порівняли дозволи на посилання та на цілі до та після зміни посилання? Можливо, вам просто знадобиться виконувати відповідні команди chown та chmod, щоб спрацювати.


Ну, я навіть не знаю, як це змінити, так що ні. І я не знаю, що роблять чон і чмод.
mk12

2
chown змінює право власності на файл та / або каталог. chmod змінює дозволи файлу та / або каталогу. Вони є стандартними для кожної платформи Unix. Занадто багато деталей для пояснення кожного тут, тож я рекомендував би гугл кожен для навчальних посібників. Ви також можете зробити "man chown" або "man chmod", щоб прочитати фактичну інструкцію команди (натисніть q, щоб вийти з посібника).
churnd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.