Наутилус - нет поддержки жестких ссылок?

Я наконец пришел к изучению и пониманию жестких ссылок в своем стремлении проверить, что я понял основы, из которых мне удалось пропустить много. Понимая, насколько они великолепны, я удивляюсь, почему нет лучшей поддержки для них в стандартном файловом менеджере Ubuntu, nautilus.

На данный момент есть только одна опция для создания ссылки на файл, и она создаст «мягкую» ссылку.

enter image description here

Проблема в том, что они ломаются, как только вы перемещаете или переименовываете исходный файл.

Вопрос

Есть ли способ заставить nautilus создать жесткую ссылку, или какой-то аддон / скрипт / конфигурация / твик, который я могу сделать, чтобы добавить опцию в меню правой кнопки мыши или сочетание клавиш для создания жесткой ссылки на файл?

3
задан 21 November 2017 в 22:37

2 ответа

По-видимому, эта опция является намеренно сокращением несколько лет назад. От темы, Создающей жесткие ссылки из bugzilla.gnome.org:

Почти ни один из наших пользователей не знает hardlink понятия, итак, почему мы должны смутить его и даже рискнуть потерей данных? Можно использовать открытый терминал наутилуса и создать hardlinks вручную.


Хорошие новости - Вы, имеют две опции создать эту функцию:

  • при помощи Действий Наутилуса или
  • при помощи Сценариев Наутилуса


Решение 1: при помощи Действий Наутилуса

1. Сначала установите пакет nautilus-actions:

sudo apt update
sudo apt install nautilus-actions

Или использование программное обеспечение Ubuntu:

install nautilus-actions

2. Запустите программу:

run nautilus-actions

3. Перейдите к 'Предпочтениям', и снятие флажка 'Создают корневое Меню действий Наутилуса':

nautilus-actions Preferences

Когда эта опция будет отмечена, в контекстном меню будет иметь подменю, и т.д.

4. Нажмите на Define новая кнопка действий и заполните данные на вкладке Action. Как Маркировка Контекста можно использовать Make Hard Link, также отметьте только опцию Display item in selection context menu - другими словами, отобразите этот объект, когда файл будет выбран.

Define new action - Action

5. Перейдите к вкладке Command и заполните параметры:

  • Профиль:

    • Маркировка: Default profile - если нет никакого пользовательского профиля.
  • Команда:

    • Путь: /bin/ln - это - путь к исполняемому файлу (или команда).
    • Параметры: %f 'Hard Link to %b' - нажмите на кнопку Label для большего количества информации.
    • Рабочий каталог: %d - текущий каталог средств.

Define new action - Command

6. Поскольку Каталог hardlinks повреждает файловую систему несколькими способами, мы должны отключить эту возможность. Перейдите к вкладке Mimetypes и добавьте новое правило:

  • Фильтр Mimetype: inode/directory,
  • с Must not match any of опция выбрана.

Define new action - Mimetypes

7. Запись действие Делает Жесткую ссылку:

Define new action - Record

8. Выполненный Наутилус и использование Делают действие Жесткой ссылки из контекстного меню:

enter image description here


Кроме того, если Вы хотите скопировать свои настройки:

  • файл $HOME/.config/nautilus-actions/nautilus-actions.conf содержит предпочтения Действий Наутилуса.
  • и новые действия являются местами в папке: $HOME/.local/share/file-manager/actions/.


Решение 2: при помощи Сценариев Наутилуса

Тот же результат может быть достигнут с помощью сценария, помещенного в $HOME/.local/share/nautilus/scripts/. Этот сценарий мог быть похожим:

$ cat "$HOME/.local/share/nautilus/scripts/Make Hard Link"

#!/bin/bash
if [[ -f "$1" ]]
then
        ln "$1" "Hard Link to $1"
fi

Мы можем создать этот сценарий и дать ему исполняемые полномочия через команду:

ScriptNAME="$HOME/.local/share/nautilus/scripts/Make Hard Link" && \
printf '#!/bin/bash\nif [[ -f \"$1\" ]]\nthen\n\tln \"$1\" \"Hard Link to $1\"\nfi\n' |\
tee "$ScriptNAME" && chmod +x "$ScriptNAME"

Результат будет:

enter image description here

Ссылки:

5
ответ дан 21 November 2017 в 22:37

Вдохновленный ответами здесь, я написал сценарий Nautilus/Nemo, который создает жесткие ссылки из нескольких файлов.

#!/bin/bash
# make hard links for multiple file selection
# be careful of not moving the hard link to a different file system
HARDLINK_ICON=${HOME}/.local/share/icons/mine/folder-green-activities-icon.png
for arg 
do
    # make a hard link of the selected file
    if [[ -f "$arg" ]] 
    then
        HARDLINK_NAME="Hard Link to $arg"
        ln "$arg" "${HARDLINK_NAME}"
        gio set -t string "${HARDLINK_NAME}" metadata::custom-icon file:///${HARDLINK_ICON}
    fi
done
  1. Не забудьте добавить значки в локальную домашнюю папку. Что-то вроде ${HOME}/.local/share/icons/mine/folder-green-activities-icon.png
  2. Не переносите жесткую ссылку на другую файловую систему; она не будет работать. Если значок не отображается, скорее всего, жесткая ссылка была вырезана и вставлена ​​в другую файловую систему.
1
ответ дан 1 November 2020 в 15:05

Другие вопросы по тегам:

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