Resultado silencioso con dos files idénticos en diff: ¿cómo mostrarlos?

Cuando configuro el parámetro -s , diff también imprime files, que son diferentes.

 diff -s $FIRST_FILE $SECOND_FILE 

Una posible solución puede ser:

 diff -s $FIRST_FILE $SECOND_FILE > /dev/null if [ $? -eq 0 ]; then echo "The files are identical" fi 

NOTA: Cambió el text de la pregunta.

La filosofía de Unix es tener una herramienta por trabajo y el caparazón para unirlas. Entonces: una herramienta para comparar y una herramienta para get el formatting de salida deseado.

En este caso, el formatting de salida es lo suficientemente simple como para que esta parte se pueda realizar directamente con el shell.

Para comparar dos files, si solo está interesado en si tienen el mismo contenido y no en enumerar las diferencias, use cmp .

 if cmp -s -- "$FIRST_FILE" "$SECOND_FILE"; then printf '%s\n' "$FIRST_FILE = $SECOND_FILE" fi 

Por defecto, diff es silencioso cuando se le dan files idénticos; ese es el único aspecto de su comportamiento que cambia. Por lo tanto, siempre compara files y genera diferencias; con -s también emite un post cuando los files son idénticos, sin -s no menciona files idénticos en absoluto.

Puede get el comportamiento que creo que está buscando combinando -q y -s ; -q indica que diff solo indica que los files difieren (cuando lo hacen), sin detallar las diferencias.

Aquí hay un ejemplo:

 $ echo 1 > a $ echo 2 > b $ echo 2 > c $ diff -qs ab Files a and b differ $ diff -qs bc Files b and c are identical 

He puesto comillas alnetworkingedor de los nombres de los files, también debe cambiar los nombres de los files a minúsculas.

 diff "${FIRST_FILE}" "${SECOND_FILE}" > /dev/null && echo "Same"