Como eu posso “diferenciar” dois arquivos com o Nautilus?

16

Instalei o Meld e descobri que é uma excelente ferramenta de comparação. Infelizmente não há integração com o Nautilus 3.2. Isso significa que não posso clicar com o botão direito nos arquivos e selecionar uma opção para abri-los no Meld para comparação.

Eu vi no comentário de ferramentas que a ferramenta precisa do pacote diff-ext a ser instalado. Este pacote foi removido do universo Ubuntu, eu estou supondo porque o gtk 3.0. Mesmo se eu baixei manualmente da fonte forjar o pacote diff-ext , quando tento configurá-lo a verificação falha com a mensagem:

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, então nesta saída eu sei que o gtk 2 está sendo requerido para instalar a extensão diff no nautilus.

Agora, minha pergunta é: Existe a possibilidade de integrar o Meld no Nautilus? Ou existe alguma outra ferramenta baseada em diferenças que se integre com o Nautilus atual? Então, baseado em gtk3.

Estou usando o Ubuntu 11.10 se houver alguma dúvida até agora.

    
por bioShark 11.03.2012 / 23:11

4 respostas

20

Existe uma extensão útil do Python que incorpora o Meld no Nautilus

como instalar

Obtenha o código-fonte ou o pacote deb do site dos autores .

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

Pesquise por pyextension no Dash e execute PyExtension do Nautilus .

Ative a extensão meld (instale-a se solicitado) e clique na opção de reiniciar o Nautilus na barra de ferramentas.

Erro do GConf

Caso você encontre um erro relacionado ao GConf ao tentar abrir o Nautilus PyExtension, instale "gobject-introspection" e "gir1.2-gconf-2.0":

sudo apt-get install gobject-introspection
sudo apt-get install gir1.2-gconf-2.0
    
por fossfreedom 12.03.2012 / 00:18
11

Você também pode instalar o pacote nautilus-compare, disponível (começando com o Ubuntu 12.04) a partir dos repositórios de pacotes padrão do Ubuntu - execute o seguinte a partir de um terminal:

sudo apt-get install nautilus-compare

Isso fornece opções de menu nautilus para comparações de 2 e 3 vias. O Meld é usado por padrão, mas qualquer aplicativo diff definido pelo usuário pode ser usado.

Uma vantagem significativa dessa solução é que é possível comparar arquivos ou pastas localizados em diretórios diferentes (por exemplo, /home/user/a/b/c/file.txt e /home/user/d/e/f/otherfile.txt podem ser abertos em diferentes janelas do Nautilus e comparados entre si).

    
por Mark 31.10.2012 / 17:59
3

Script do Nautilus

Uma alternativa mais fácil e eficiente para instalar uma extensão dedicada seria usar um script do Nautilus como o seguinte:

#!/bin/bash
meld "$@"

Instruções de instalação: Como posso instalar um script do Nautilus?

    
por Glutanimate 18.09.2013 / 15:06
2

Usando o Nautilus para comparar o arquivo com o texto da área de transferência

Esta resposta é usada principalmente para comparar um arquivo com texto na área de transferência que foi copiada da Internet. O texto da área de transferência pode ter sido copiado de outro arquivo no seu sistema - tornando-o uma resposta qualificada.

As diferenças de arquivo são destacadas usando o comando diff nativo do bash e, em seguida, exibidas usando gedit . Isso pode ser modificado para meld ou qualquer outro pacote de terceiros.

Esta resposta usa a função interna do Nautilus para executar um script personalizado depois de selecionar um arquivo:

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

OBSERVAÇÃO: Eu desenvolvi este script do Nautilus algumas semanas atrás e tenho significado postá-lo como um novo Q & amp; A, mas tenho sido pressionado pelo tempo e não tinha certeza se alguém realmente seria tudo isso interessado nela.

Exemplo de saída

Neste exemplo, comparamos o script real publicado aqui na AU antes de 31 de março de 2017 com a versão revisada em 31 de março de 2017. Observe como as novas informações e mensagens de erro foram configuradas.

O comando diff é muito poderoso e, como tal, tem uma infinidade de parâmetros de controle. Digite man diff no terminal para as páginas de manual ou info diff para mais detalhes sobre o uso de comandos.

    
por WinEunuuchs2Unix 25.03.2017 / 19:27