“diff orig new” vs. “diff new orig” [fechado]

4

Ao comparar dois arquivos usando diff , o arquivo original é fornecido como primeiro argumento e o new (modificado) como segundo argumento.

diff original new

Presumivelmente, a lógica por trás dessa ordenação foi mostrar como transformar o original no novo, usando a convenção da esquerda para a direita para o fluxo de tempo.

Estou tendo problemas com essa lógica. Quando estou digitando dois arquivos, intuitivamente, uso a notação inversa:

diff new original

para que eu possa, depois de analisar as alterações, colocar o novo arquivo no antigo e, assim, "remendá-lo" à nova versão.

cat new > original

Mas usar a notação invertida "my" é confusa, porque diff mostra + para exclusão e - para adição.

Como posso resolver este problema?

    
por Martin Vegter 31.10.2016 / 22:48

2 respostas

1

Existe uma solução simples!

Escreva o seguinte script:

if [ "$#" -ne 2 ]; then
    echo "USAGE: diff2 newfile oldfile"
    exit 1;
fi

diff $2 $1

Salve-o em uma das pastas no PATH (talvez /bin ou /usr/bin ) como diff2.

E é isso, agora você pode ligar:

diff2 newfile oldfile , que então chamará diff oldfile newfile

    
por 31.10.2016 / 23:04
1

Uma rápida olhada na página man sugere que você pode usar as opções --from-file=original e --to-file=new , se quiser ser explícito. Você estará digitando um pouco mais, mas lhe dará a flexibilidade que precisa e, como bônus, tornará as coisas explícitas.

diff --to-file=new --from-file=original

Se você quiser, você também pode escrever um script wrapper simples, que leva apenas os nomes dos arquivos na ordem que você quer e executa isso para você.

EDIT: Isto é para o diff de GNU ... não tenho certeza se isso é padrão (POSIX) opções embora.

    
por 31.10.2016 / 23:04