"diff orig nuevo" frente a "diff nuevo origen"

"diff orig nuevo" frente a "diff nuevo origen"

Al comparar 2 archivos usando diff, el originalarchivo se proporciona como primer argumento y el new(modificado) como segundo argumento.

diff original new

Presumiblemente, la lógica detrás de este orden era mostrar cómo transformar el original en uno nuevo, utilizando la convención de izquierda a derecha para el flujo del tiempo.

Tengo problemas con esta lógica. Cuando diferencio dos archivos, uso intuitivamente la notación inversa:

diff new original

para que pueda, después de revisar los cambios, incorporar el nuevo archivo al anterior y así "parchearlo" a la nueva versión.

cat new > original

Pero usar "mi" notación invertida es confuso, porque diff muestra +para eliminar y -para sumar.

¿Como puedo resolver este problema?

Respuesta1

Un vistazo rápido a la página de manual sugiere que puede usar las opciones --from-file=originaly --to-file=new, si quiere ser explícito. Escribirás un poco más, pero te dará la flexibilidad que necesitas y, como beneficio adicional, harás las cosas explícitas.

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

Si lo desea, también puede escribir un script contenedor simple que tome solo los nombres de los archivos en el orden que desee y los ejecute por usted.

EDITAR: Esto es para GNU diff... aunque no estoy seguro si son opciones estándar (POSIX).

Respuesta2

¡Existe una solución simple!

Escribe el siguiente guión:

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

diff $2 $1

Guárdelo en una de las carpetas de PATH (tal vez /bino /usr/bin) como diff2.

Y listo, ya puedes llamar:

diff2 newfile oldfile, que luego llamarádiff oldfile newfile

información relacionada