Jak mogę „różnicować” dwa pliki za pomocą Nautilus?

16

Zainstalowałem Melda i odkryłem, że jest to świetne narzędzie do porównywania. Niestety nie ma integracji z Nautilus 3.2. Oznacza to, że nie mogę kliknąć plików prawym przyciskiem myszy i wybrać opcji otwarcia ich w Meldie w celu porównania.

W komentarzu narzędzi widziałem, że narzędzie wymaga zainstalowanego pakietu diff-ext . Ten pakiet został usunięty z uniwersum Ubuntu, zgaduję, ponieważ gtk 3.0. Nawet jeśli ręcznie pobrałem ze źródła sfałszuj pakiet diff-ext , kiedy próbuję go skonfigurować, sprawdzenie kończy się niepowodzeniem z komunikatem:

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

Ok, więc z tego wyjścia wynika, że ​​rzeczywiście gtk 2 jest wymagany do zainstalowania rozszerzenia diff na nautilusie.

Moje pytanie brzmi: czy istnieje możliwość zintegrowania Melda z Nautilusem? A może istnieją inne narzędzia oparte na różnicach, które integrują się z obecnym Nautilusem? Oparty na gtk3.

Używam Ubuntu 11.10, jeśli do tej pory istniały jakiekolwiek wątpliwości.

bioShark
źródło

Odpowiedzi:

20

Istnieje przydatne rozszerzenie Pythona, które zawiera Melda w Nautilusie

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

jak zainstalować

Uzyskaj źródło lub pakiet deb ze strony internetowej autorów .

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

Wyszukaj pyextension w Dash i uruchom Nautilus PyExtension .

Aktywuj rozszerzenie meld (zainstaluj, jeśli zostaniesz o to poproszony) i kliknij opcję restartu paska narzędzi Nautilus.

Błąd GConf

W przypadku znalezienia błędu związanego z GConf podczas próby otwarcia Nautilus PyExtension, zainstaluj „gobject-introspection” i „gir1.2-gconf-2.0”:

sudo apt-get install gobject-introspection
sudo apt-get install gir1.2-gconf-2.0
fossfreedom
źródło
Dziękuję, ta praca świetnie. Ponadto dziękuję za poświęcenie czasu na wykonanie zrzutów ekranu i wykonanie szybkiego opisu instalacji. Zawsze dobrze jest uzyskać od ciebie odpowiedzi.
bioShark
meldjest super-duper niesamowite. Świetna wskazówka integracyjna.
belacqua
11

Możesz także zainstalować pakiet nautilus-Compare, dostępny (począwszy od Ubuntu 12.04) ze standardowych repozytoriów pakietów Ubuntu - uruchom następujące polecenie z terminala:

sudo apt-get install nautilus-compare

Zapewnia to opcje menu nautilus dla porównań 2 i 3-drogowych. Meld jest używany domyślnie, ale można użyć dowolnej aplikacji różnicowej zdefiniowanej przez użytkownika.

Istotną zaletą tego rozwiązania jest to, że można porównać pliki lub foldery znajdujące się w różnych katalogach (np /home/user/a/b/c/file.txti /home/user/d/e/f/otherfile.txtmożna otworzyć okna w różnych Nautilus, i porównano ze sobą).

znak
źródło
3

Skrypt Nautilus

Łatwiejszą i bardziej wydajną alternatywą dla instalowania dedykowanego rozszerzenia byłoby użycie skryptu Nautilus takiego jak poniższy:

#!/bin/bash
meld "$@"

Instrukcje instalacji: Jak mogę zainstalować skrypt Nautilus?

Glutanimate
źródło
To jest z pewnością najlepsze rozwiązanie. Pozwala to uniknąć instalowania jeszcze innych pakietów i powiązanych kosztów ogólnych. Dzięki, @Glutanimate.
u2n
2

Używanie Nautilusa do porównania pliku do schowka zawierającego tekst

Ta odpowiedź służy przede wszystkim do porównania pliku z tekstem w schowku skopiowanym z Internetu. Jednak tekst ze schowka mógł zostać skopiowany z innego pliku w systemie - co czyni tę odpowiedź odpowiednią.

Różnice plików są podświetlane za pomocą natywnego diffpolecenia bash, a następnie wyświetlane za pomocą gedit. Można to jednak zmodyfikować w melddowolnym pakiecie strony trzeciej.

Ta odpowiedź wykorzystuje wbudowaną funkcję Nautilus do uruchomienia niestandardowego skryptu po wybraniu pliku:

#!/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

UWAGA: opracowałem ten skrypt Nautilus kilka tygodni temu i zamierzałem opublikować go jako nowe pytanie, ale naciskałem na czas i nie byłem pewien, czy ktokolwiek naprawdę byłby tym zainteresowany.

Próbka wyjściowa

Schowek różnicowy 1

W tym przykładzie porównujemy rzeczywisty skrypt opublikowany tutaj w AU przed 31 marca 2017 r. Z wersją poprawioną 31 marca 2017 r. Zwróć uwagę, jak skonfigurowano nowe informacje i komunikaty o błędach.

diffKomenda jest bardzo silny i jako taki ma mnóstwo parametrów sterujących. Wpisz man diffw terminalu strony podręcznika lub info diffdodatkowe szczegóły użycia poleceń.

WinEunuuchs2Unix
źródło