nemo: Действие контекстного меню Запуск сценария который заставляет выбранную символическую ссылку быть относительной

В одной из систем Ubuntu 8.10 я использую описанный ниже подход, если мое устройство не монтируется автоматически.

Выполните команду fdisk -l.из man-страницы fdisk,

 -l     List the partition tables for the  specified  devices  and  then
              exit.   If no devices are given, those mentioned in /proc/parti-
              tions (if that exists) are used.

Теперь, даже когда мое USB не смонтировано, вышеприведенная команда выдаст список USB-накопителей. Теперь, вы, вероятно, можете создать точку монтирования где-нибудь в /media или где угодно и вручную смонтировать USB диск как,

mount /dev/sda1 /media/usb-drive
1
10.08.2015, 05:03
1 ответ

Есть несколько проблем с вашим скриптом.

  • Отсутствуют двойные кавычки вокруг $ (ссылка для чтения…) . Это сломается, если цель ссылки содержит пробелы или подстановочные знаки.
  • Вы используете подстановку команды вокруг команды ln и используете результат как команду для выполнения. К счастью, это не причинит вреда, поскольку ln не производит никакого вывода.
  • Ваша команда mv перемещает символическую ссылку в целевое местоположение, что не имеет смысла.

Я думаю, это то, что вы хотели написать:

#!/bin/sh
ln -rs -- "$(readlink -f -- "$1")" "$1.tmp"
mv -f -- "$1.tmp" "$1"

В качестве альтернативы вы можете использовать утилиту symlinks (первоначально от Марка Лордса, теперь поддерживаемую Дж. Брандтом Бакли), присутствующую во многих дистрибутивах Linux. . Команда символические ссылки -c / путь / к / каталогу преобразует все символические ссылки в указанном каталоге в относительные ссылки.

1
27.01.2020, 23:50

Теги

Похожие вопросы