Давайте примем следующую ситуацию:
Я имею file1
где-нибудь
$ touch file1
Я делаю символьную ссылку на file1
как symlink1
:
$ ln -s file1 symlink1
$ file symlink1
symlink1: symbolic link to file1
Я переименовываю file1
к новому имени (теперь symlink1
повреждается),
$ mv file1 file2
$ file symlink1
symlink1: broken symbolic link to file1
После последнего шага symlink1
- связь разорвана.
Я знаю в ту полночь, что у Командующего есть Файл → опция символьной ссылки Редактирования, но это - терминальный путь:
$ file symlink1
symlink1: symbolic link to file2
и очень полезно, если целевая и символьная ссылка расположена в различных файловых системах и/или вложенных папках.
Поскольку далеко я вижу, что у Наутилуса, Caja, Немо, Thunar и дельфина нет этой функциональности.
Обновление. Самым полезным решением для меня была бы интеграция с файловым менеджером Caja Caja-действиями. Я использую Caja на ежедневной основе.
Чтобы сделать это в Наутилусе, мы должны создать использование сценария:
mkdir -p ~/.local/share/nautilus/scripts
gedit ~/.local/share/nautilus/scripts/edit-link
Вставка в следующем:
#!/bin/bash
# NAME: edit-link
# PATH: $HOME/.local/share/nautilus/scripts
# DESC: Edit symbolic link
# CALL: Called from Nautilus file manager.
# DATE: August 18, 2018.
# strip new line char passed by Nautilus
FILENAME=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed -e 's/\r//g')
# Multiple files can't be selected.
LINE_COUNT=$(wc -l <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
LINE_COUNT=$((LINE_COUNT-1))
if [[ $LINE_COUNT > 1 ]] ; then
zenity --error --text "Ony one file can be selected at a time! "
exit 1
fi
# Object type must be "file..." (ie no directories, etc.)
if [ -d "${FILENAME}" ] ; then
zenity --error --text "$FILENAME is a directory!";
exit 1
else
if [ -L "${FILENAME}" ]; then
: # Bash noop
else
zenity --error --text "${FILENAME} is not a symbolic link!";
exit 2
fi
fi
NewLink=$(zenity --entry --text "Enter new symbolic link")
ln -sf "$NewLink" "${FILENAME}"
exit 0
и сделайте это исполняемым файлом
chmod +x ~/.local/share/nautilus/scripts/edit-link
Это - используемые данные тестирования. Предпоследний раздел показывает неработающую ссылку. Затем наш скрипт запущен, дав новое имя файла. Последний раздел показывает новую хорошую ссылку.
Это - то, на что сценарий похож при выполнении его:
Scripts
edit-link
Метод похож Наутилусу, но с некоторыми специфическими особенностями Caja. Мы должны следовать Руководству по миграции GNOME2→MATE.
Таким образом, мы должны создать сценарий в ~/.config/caja/scripts
:
mkdir -p ~/.config/caja/scripts
cat > ~/.config/caja/scripts/edit-link << \EOF
#!/bin/bash
# NAME: edit-link
# PATH: $HOME/.config/caja/scripts
# DESC: Edit symbolic link
# CALL: Called from Caja file manager.
# DATE: August 19, 2018.
# strip new line char passed by Caja
FILENAME=$(echo $CAJA_SCRIPT_SELECTED_FILE_PATHS | sed -e 's/\r//g')
# Multiple files can't be selected.
LINE_COUNT=$(wc -l <<< "$CAJA_SCRIPT_SELECTED_FILE_PATHS")
LINE_COUNT=$((LINE_COUNT-1))
if [[ $LINE_COUNT > 1 ]] ; then
zenity --error --text "Ony one file can be selected at a time! "
exit 1
fi
# Object type must be "file..." (ie no directories, etc.)
if [ -d "${FILENAME}" ] ; then
zenity --error --text "$FILENAME is a directory!";
exit 1
else
if [ -L "${FILENAME}" ]; then
: # Bash noop
else
zenity --error --text "${FILENAME} is not a symbolic link!";
exit 2
fi
fi
NewLink=$(zenity --entry --text "Enter new symbolic link")
ln -sf "$NewLink" "${FILENAME}"
exit 0
EOF
и сделайте это исполняемым файлом
chmod +x ~/.config/caja/scripts/edit-link
Затем мы можем использовать этот сценарий из Сценариев Caja выпадающее меню.
Я использую thunar в качестве файлового менеджера по умолчанию, и вот что я предлагаю, чтобы получить подобное поведение, как mc.
Создайте простой сценарий оболочки и сохраните его где угодно, для демонстрации. Я сохранил его в своем $HOME
:
#!/bin/bash
if [ -L "$1" ];
then
new_address=$(zenity --entry)
ln -sf "$new_address" "$1"
else
zenity --error --text 'This is not a link'
fi
Добавьте новое настраиваемое действие, например, для запуска этого сценария. в thunar
:
Теперь я могу щелкнуть правой кнопкой мыши по файлам и выбрать «relink», и он запросит новый адрес по этой ссылке:
Это очевидно, что вам нужно установить пакет zenity
, чтобы использовать этот скрипт, я думаю, вы можете управлять использовать его в разных файловых менеджерах.