Замініть символічне посилання, яке пов’язане з цільовим каталогом


17

Я хочу оновити сервер tomcat з 7.0.19 до 7.0.20.

Я вже був ln -s apache-tomcat-7.0.19 tomcat7раніше, тому тепер мені потрібно зв’язатися tomcat7 з новою ціллю за допомогою наступної команди ln -s --force apache-tomcat-7.0.21 tomcat7, але вона не працює так, як я очікував: вона створила символічне посилання tomcat7/apache-tomcat-7.0.21замість того, щоб замінити існуюче tomcat7символічне посилання новою ціллю.

Приклад

# mkdir v1 v2
# ln -s v1 v
# ln -s v2 v
# ll v*
lrwxrwxrwx. 1 root root    2 Sep  5 16:02 v -> v1

v1:
total 0
lrwxrwxrwx. 1 root root 2 Sep  5 16:02 v2 -> v2

v2:
total 0

Я перевірив посібникln , я думаю, ln -s --force apache-tomcat-7.0.21 tomcat7використовуйте 3-ю форму замість 1-ї форми, щоб пояснити параметри. Це так неоднозначно між І та ІІІ класом. Тож як замінити символічне посилання в цьому випадку?

Відповіді:


16

Вам потрібен -Tваріант:

$ mkdir v1
$ ln -s v1 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:58 foo -> v1/
$ mkdir v2
$ ln -s -T -f v2 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:59 foo -> v2/

Дякую, саме це мені було потрібно. Яка ганьба, я бачу цей необов'язковий варіант у допомозі, але не знаю, що це робить.
LiuYan 刘 研

16

Під час заміни символічних посилань на каталоги ми повинні використовувати -nопцію.

Приклад: ln -sfn /path/to/directory /target/directory


1
Це має бути прийнятою відповіддю. Вирішує питання і однолінійний / компактний.
до

1
Прийнята відповідь також вирішує питання і є одним вкладишем ... якщо я не помиляюся, він може бути однаково компактним. Я не думаю, що потрібно мати окремий -пробіл перед кожним прапором, як у них.
ArtOfWarfare

3

Чому б не просто

rm tomcat7
ln -s apache-tomcat-7.0.21 tomcat7

?

Це не торкнеться старого каталогу apache-tomcat-7.0.19, а просто видалить старе посилання. Тоді ln може створити нову.


Спасибі! Я робив це зараз у своєму сценарії, але я думаю, що це несхоже cp -f/ mv -fякі використовують одну команду для перезапису операції, тому я шукаю рішення для однієї команди .
LiuYan 刘 研
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.