"diff orig novo" vs. "diff novo orig"

"diff orig novo" vs. "diff novo orig"

Ao comparar 2 arquivos usando diff, o originalarquivo é fornecido como primeiro argumento e o new(modificado) como segundo argumento.

diff original new

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

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

diff new original

para que eu possa, após revisar as alterações, transformar o novo arquivo no antigo e, assim, "corrigi-lo" para a nova versão.

cat new > original

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

Como posso resolver esse problema?

Responder1

Uma rápida olhada na página de manual sugere que você pode usar as opções --from-file=originale --to-file=new, se quiser ser explícito. Você digitará um pouco mais, mas terá a flexibilidade necessária e, como bônus, tornará as coisas explícitas.

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

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

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

Responder2

Há uma solução simples!

Escreva o seguinte roteiro:

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

diff $2 $1

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

E é isso, agora você pode ligar:

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

informação relacionada