Como posso "diferenciar" dois arquivos com o Nautilus?

16

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

Eu vi no comentário das ferramentas que a ferramenta precisa do pacote diff-ext para ser instalado. Este pacote foi removido do universo Ubuntu, acho que é porque o gtk 3.0. Mesmo se eu baixei manualmente do código-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, a partir desta saída, entendo que, de fato, o gtk 2 está sendo necessário para instalar a extensão diff no nautilus.

Agora, minha pergunta é: existe a possibilidade de integrar o Meld ao Nautilus? Ou existe alguma outra ferramenta baseada em diff que se integre ao Nautilus atual? Então gtk3 baseado.

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

bioShark
fonte

Respostas:

20

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

insira a descrição da imagem aqui

insira a descrição da imagem aqui

como instalar

Obtenha a fonte ou o pacote deb no 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 pyextension no Dash e execute o Nautilus PyExtension .

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

Erro GConf

Caso 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
liberdade de expressão
fonte
Obrigado, este trabalho é ótimo. Além disso, obrigado por dedicar um tempo para fazer as capturas de tela e fazer a descrição da instalação rápida. É sempre bom obter respostas suas.
bioShark
meldé super-duper incrível. Ótima dica de integração.
belacqua
11

Você também pode instalar o pacote nautilus-compare, disponível (a partir do Ubuntu 12.04) nos repositórios de pacotes padrão do Ubuntu - execute o seguinte em 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.txtpodem ser abertos em diferentes janelas do Nautilus e comparados entre si).

Marca
fonte
3

Script Nautilus

Uma alternativa mais fácil e eficiente à instalação de uma extensão dedicada seria usar um script do Nautilus como o seguinte:

#!/bin/bash
meld "$@"

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

Glutanimado
fonte
Esta é facilmente a melhor solução. Evita a instalação de outros pacotes e despesas gerais relacionadas. Obrigado, @Glutanimate.
u2n 18/01/14
2

Usando o Nautilus para comparar o arquivo com a área de transferência que contém texto

Esta resposta é usada principalmente para comparar um arquivo com o 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 esta uma resposta elegível.

As diferenças de arquivo são destacadas usando o diffcomando nativo do bash e depois exibidas usando gedit. Isso pode ser modificado para meldou para qualquer outro pacote de terceiros.

Esta resposta usa a função interna do Nautilus para executar um script personalizado após 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: desenvolvi esse script do Nautilus há algumas semanas e pretendo postá-lo como uma nova sessão de perguntas e respostas, mas tenho pressionado o tempo e não tinha certeza se alguém realmente estaria interessado nisso.

Saída de amostra

clipboard-diff 1

Neste exemplo, estamos comparando 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 novas informações e mensagens de erro foram configuradas.

O diffcomando é muito poderoso e, como tal, possui uma infinidade de parâmetros de controle. Digite man diffo terminal para as páginas de manual ou info diffpara obter mais detalhes de uso de comandos.

WinEunuuchs2Unix
fonte