Як я можу “відрізняти” два файли за допомогою 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? Або, чи є якийсь інший інструмент на основі різниці, який інтегрується з поточним Nautilus? Так заснована gtk3.

Я використовую Ubuntu 11.10, якщо досі були якісь сумніви.

Відповіді:


20

Є корисне розширення python, яке включає Meld в Nautilus

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

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

як встановити

Отримайте джерело або пакет дебюту з веб-сайту авторів .

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 в тирі та запустіть 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-порівняння, доступний (починаючи з Ubuntu 12.04) із стандартних сховищ пакетів Ubuntu - запустіть наступне з терміналу:

sudo apt-get install nautilus-compare

Це надає параметри меню nautilus для двостороннього та тристороннього порівняння. Meld використовується за замовчуванням, але можна використовувати будь-яку визначену користувачем розроблену програму.

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

Вибірка зразка

буфер обміну-розл.1

У цьому прикладі ми порівнюємо фактичний сценарій, розміщений тут в АС до 31 березня 2017 року, та версію, переглянуту 31 березня 2017 р. Зверніть увагу, як налаштовувались нові відомості та повідомлення про помилки.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.