Как я могу «различить» два файла с помощью Nautilus?

16

Я установил Meld и обнаружил, что это отличный инструмент для сравнения. К сожалению, нет интеграции с Nautilus 3.2. Это означает, что я не могу щелкнуть правой кнопкой мыши по файлам и выбрать опцию, чтобы открыть их в Meld для сравнения.

В комментарии к инструментам я видел, что для установки инструмента необходим пакет diff-ext . Этот пакет был удален из вселенной Ubuntu, я думаю, потому что gtk 3.0. Даже если я вручную скачал из исходного кода forge пакет diff-ext , при попытке настроить его проверка завершается с сообщением:

checking for DIFF_EXT... configure: error: Package requirements (libnautilus-extension >= 2.14.0 gconf-2.0 >= 2.14.0 gnome-vfs-module-2.0 >= 2.14) were not met:

No package 'libnautilus-extension' found
No package 'gconf-2.0' found
No package 'gnome-vfs-module-2.0' found

Итак, из этого вывода я понял, что действительно требуется gtk 2 для установки расширения diff на nautilus.

Теперь мой вопрос: есть ли возможность интегрировать Meld в Nautilus? Или есть какой-нибудь другой инструмент на основе diff, который интегрируется с текущим Nautilus? Итак, на основе gtk3.

Я использую Ubuntu 11.10, если были какие-либо сомнения.

bioShark
источник

Ответы:

20

Существует полезное расширение для Python, которое включает Meld в Nautilus

введите описание изображения здесь

введите описание изображения здесь

Как установить

Получите исходный код или пакет deb с сайта авторов .

wget http://www.giuspen.com/software/nautilus-pyextensions_3.4.1-1_all.deb

sudo apt-get install python-nautilus
sudo dpkg -i nautilus-pyextensions_3.4.1-1_all.deb

Выполните поиск pyextension в Dash и запустите Nautilus PyExtension .

Активируйте расширение meld (установите его, если будет предложено) и нажмите кнопку «Перезагрузить» на панели инструментов Nautilus.

Ошибка GConf

Если вы обнаружите ошибку, связанную с GConf, при попытке открыть Nautilus PyExtension, установите «gobject-introspection» и «gir1.2-gconf-2.0»:

sudo apt-get install gobject-introspection
sudo apt-get install gir1.2-gconf-2.0
fossfreedom
источник
Спасибо, эта работа великолепна. Кроме того, спасибо, что нашли время, чтобы сделать снимки экрана и сделать описание быстрой установки. Всегда приятно получить от вас ответы.
BioShark
meldсуперский супер Отличный совет по интеграции.
Белаква
11

Вы также можете установить пакет nautilus-compare, доступный (начиная с Ubuntu 12.04) из стандартных репозиториев пакетов Ubuntu - запустите следующее из терминала:

sudo apt-get install nautilus-compare

Это обеспечивает опции меню nautilus для 2-х и 3-х сторонних сравнений. Meld используется по умолчанию, но может использоваться любое пользовательское приложение diff.

Существенным преимуществом этого решения является то, что можно сравнивать файлы или папки, расположенные в разных каталогах (например, /home/user/a/b/c/file.txtи /home/user/d/e/f/otherfile.txtих можно открывать в разных окнах Nautilus и сравнивать друг с другом).

отметка
источник
3

Наутилус сценарий

Более простой и эффективной альтернативой установке выделенного расширения будет использование скрипта Nautilus, подобного следующему:

#!/bin/bash
meld "$@"

Инструкция по установке: Как я могу установить скрипт Nautilus?

Glutanimate
источник
Это легко лучшее решение. Это позволяет избежать установки других pkgs и связанных с ними издержек. Спасибо, @Glutanimate.
u2n
2

Использование Nautilus для сравнения файла с буфером обмена, содержащим текст

Этот ответ в основном используется для сравнения файла с текстом в буфере обмена, который был скопирован из Интернета. Текст буфера обмена мог быть скопирован из другого файла в вашей системе, что делает этот ответ приемлемым.

Различия в файлах выделяются с помощью собственной diffкоманды bash, а затем отображаются с помощью gedit. Это может быть изменено meldили любой другой сторонний пакет, хотя.

Этот ответ использует встроенную функцию Nautilus для запуска собственного скрипта после выбора файла:

#!/bin/bash

# NAME: clipboard-diff
# PATH: $HOME/.local/share/nautilus/scripts
# DESC: Find differences bewteen selected file on disk and clipboard.
# CALL: Called from Nautilus file manager.
# DATE: March 18, 2017. Modified: March 31, 2017.

# NOTE: The clipboard would contain text highlighted on website and copied
#       with <ctrl>+<C>. Requires command `xclip` to be installed.

# Must have the xclip package. On Ubuntu 16.04, not installed by default
command -v xclip >/dev/null 2>&1 || { zenity --error --text "Install xclip using: 'sudo apt install xclip' to use this script.  Aborting."; exit 99; }

# 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 [ -f "${FILENAME}" ]; then
        : # Bash noop
    else
        zenity --error --text "${FILENAME} is not a file!";
        exit 2
    fi
fi

# Get clipboard contents into working file
workfile="/tmp/clipboard-work-"$(date +%s)
xclip -o > $workfile

# Create temporary file name so two or more open instances won't clash
differences="/tmp/clipboard-diff-"$(date +%s)

# Compare file differences
# -q brief -B ignore blank lines, -u only differences
diff --unified=2 -w -b -B -I --suppress-blank-empty \
        --suppress-common-lines --ignore-all-space \
        ${FILENAME} $workfile > $differences

# If file doesn't exist, errors in diff parameters
# If file size =0 there were no differences
if [[ -f $differences ]] ; then
    if [[ -s $differences ]] ; then
        # File not empty.
        gedit $differences
    else    
        zenity --info --text "$workfile matches $differences"
    fi
else
    zenity --error --text "cliboard-diff - error in diff parameters."
fi

# clean up /tmp directory
rm $workfile
rm $differences

exit 0

ПРИМЕЧАНИЕ: я разработал этот сценарий Nautilus пару недель назад и намеревался опубликовать его как новый Q & A, но у меня не хватило времени, и я не был уверен, действительно ли кто-нибудь заинтересуется им.

Образец вывода

буфер обмена-diff 1

В этом примере мы сравниваем фактический сценарий, опубликованный здесь в AU до 31 марта 2017 г., с версией, исправленной 31 марта 2017 г. Обратите внимание, как были настроены новая информация и сообщения об ошибках.

Команда diffочень мощная и, как таковая, имеет множество параметров управления. Введите man diffв терминале справочные страницы или info diffдля более подробной информации об использовании команд.

WinEunuuchs2Unix
источник