Ao comparar 2 arquivos usando diff
, o original
arquivo é 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=original
e --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 /bin
ou /usr/bin
) como diff2.
E é isso, agora você pode ligar:
diff2 newfile oldfile
, que então chamarádiff oldfile newfile