Как я могу «различить» два файла с помощью 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, если были какие-либо сомнения.

Ответы:


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

Спасибо, эта работа великолепна. Кроме того, спасибо, что нашли время, чтобы сделать снимки экрана и сделать описание быстрой установки. Всегда приятно получить от вас ответы.
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?


Это легко лучшее решение. Это позволяет избежать установки других 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для более подробной информации об использовании команд.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.