Come posso "diff" due file con Nautilus?


16

Ho installato Meld e ho scoperto che è un ottimo strumento di confronto. Sfortunatamente non c'è integrazione con Nautilus 3.2. Ciò significa che non posso fare clic con il pulsante destro del mouse sui file e selezionare un'opzione per aprirli in Meld per il confronto.

Ho visto nel commento degli strumenti che lo strumento necessita dell'installazione del pacchetto diff-ext . Questo pacchetto è stato rimosso dall'universo Ubuntu, immagino perché GTK 3.0. Anche se ho scaricato manualmente dal sorgente forge il pacchetto diff-ext , quando provo a configurarlo il controllo fallisce con il messaggio:

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, quindi da questo output ho capito che in effetti gtk 2 è richiesto per installare l'estensione diff su nautilus.

Ora, la mia domanda è: esiste la possibilità di integrare Meld in Nautilus? Oppure, ci sono altri strumenti basati sulla diff che si integrano con l'attuale Nautilus? Quindi basato su gtk3.

Sto usando Ubuntu 11.10 se finora ci sono stati dei dubbi.

Risposte:


20

C'è un'utile estensione Python che incorpora Meld in Nautilus

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

come installare

Ottieni la fonte o il pacchetto deb dal sito web degli autori .

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

Cerca pyextension in Dash ed esegui Nautilus PyExtension .

Attiva l'estensione della combinazione (installala se richiesto) e fai clic sull'opzione di riavvio della barra degli strumenti di Nautilus.

Errore GConf

Nel caso in cui si riscontri un errore relativo a GConf quando si tenta di aprire Nautilus PyExtension, installare "gobject-introspection" e "gir1.2-gconf-2.0":

sudo apt-get install gobject-introspection
sudo apt-get install gir1.2-gconf-2.0

Grazie, questo lavoro è fantastico. Inoltre, grazie per aver dedicato del tempo alla realizzazione delle schermate e alla descrizione dell'installazione rapida. Sempre bravo a ricevere risposte da te.
bioShark

meldè super-duper fantastico. Ottimo consiglio di integrazione.
belacqua,

11

Puoi anche installare il pacchetto nautilus-compare, disponibile (a partire da Ubuntu 12.04) dai repository di pacchetti Ubuntu standard - esegui quanto segue da un terminale:

sudo apt-get install nautilus-compare

Ciò fornisce opzioni di menu nautilus per confronti a 2 e 3 vie. La combinazione viene utilizzata per impostazione predefinita, ma è possibile utilizzare qualsiasi applicazione diff definita dall'utente.

Un vantaggio significativo di questa soluzione è che si possono confrontare file o cartelle che si trovano in directory diverse (ad es. /home/user/a/b/c/file.txtE /home/user/d/e/f/otherfile.txtpossono essere aperti in diverse finestre Nautilus e confrontati tra loro).


3

Script Nautilus

Un'alternativa più semplice ed efficiente all'installazione di un'estensione dedicata sarebbe l'utilizzo di uno script Nautilus come il seguente:

#!/bin/bash
meld "$@"

Istruzioni per l'installazione: come posso installare uno script Nautilus?


Questa è facilmente la soluzione migliore. Evita l'installazione di altri pkg e relativi costi generali. Grazie, @Glutanimate.
u2n

2

Utilizzo di Nautilus per confrontare il file con gli appunti contenenti testo

Questa risposta viene utilizzata principalmente per confrontare un file con il testo negli Appunti che è stato copiato da Internet. Il testo degli Appunti potrebbe essere stato copiato da un altro file sul tuo sistema, rendendolo una risposta idonea.

Le differenze tra i file sono evidenziate usando il diffcomando nativo di bash e quindi visualizzate usando gedit. meldTuttavia, questo può essere modificato o qualsiasi altro pacchetto di terze parti.

Questa risposta utilizza la funzione integrata di Nautilus per eseguire uno script personalizzato dopo aver selezionato un file:

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

NOTA: ho sviluppato questo script Nautilus un paio di settimane fa e intendevo pubblicarlo come nuovo Q&A, ma sono stato costretto a perdere tempo e non ero sicuro che qualcuno potesse davvero interessarsene.

Uscita campione

appunti-diff 1

In questo esempio stiamo confrontando lo script effettivo pubblicato qui in AU prima del 31 marzo 2017 con la versione rivista il 31 marzo 2017. Nota come sono state impostate nuove informazioni e messaggi di errore.

Il diffcomando è molto potente e come tale ha una miriade di parametri di controllo. Digitare man diffil terminale per le pagine del manuale o info diffper ulteriori dettagli sull'utilizzo dei comandi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.