Bash Confronto dei file


Esempio

if [[ $file1 -ef $file2 ]]; then
  echo "$file1 and $file2 are the same file"
fi

"Stesso file" significa che la modifica di uno dei file sul posto influisce sull'altro. Due file possono essere uguali anche se hanno nomi diversi, ad esempio se sono collegamenti fisici o se sono collegamenti simbolici con lo stesso target o se uno è un collegamento simbolico che punta all'altro.

Se due file hanno lo stesso contenuto, ma sono file distinti (in modo che la modifica di uno non influisca sull'altro), quindi -ef li segnala come diversi. Se si desidera confrontare due file byte per byte, utilizzare l'utilità cmp .

if cmp -s -- "$file1" "$file2"; then
  echo "$file1 and $file2 have identical contents"
else
  echo "$file1 and $file2 differ"
fi

Per produrre un elenco di differenze leggibili tra file di testo, utilizzare l'utilità diff .

if diff -u "$file1" "$file2"; then
  echo "$file1 and $file2 have identical contents"
else
  : # the differences between the files have been listed
fi