File comparisonsuggest change
if [[ $file1 -ef $file2 ]]; then echo "$file1 and $file2 are the same file" fi
“Same file” means that modifying one of the files in place affects the other. Two files can be the same even if they have different names, for example if they are hard links, or if they are symbolic links with the same target, or if one is a symbolic link pointing to the other.
If two files have the same content, but they are distinct files (so that modifying one does not affect the other), then
-ef reports them as different. If you want to compare two files byte by byte, use the
if cmp -s -- "$file1" "$file2"; then echo "$file1 and $file2 have identical contents" else echo "$file1 and $file2 differ" fi
To produce a human-readable list of differences between text files, use the
if diff -u "$file1" "$file2"; then echo "$file1 and $file2 have identical contents" else : # the differences between the files have been listed fi
Found a mistake? Have a question or improvement idea? Let me know.
Table Of Contents