Al comparar 2 archivos usando diff
, el original
archivo 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=original
y --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 /bin
o /usr/bin
) como diff2.
Y listo, ya puedes llamar:
diff2 newfile oldfile
, que luego llamarádiff oldfile newfile