How to Compare Files With Diff

How to compare files with diff

There are an infinite number of situations in which you will be required to compare two files to see where they are the same or different. This is especially important when managing multiple configuration files in a VPS web server. You can analyze each file yourself line by line, but that could take a ridiculously long time, and there’s now way to be sure whether or not your hard analyses introduced even more errors.

How To Use The diff Command

In order to use the diff command you will of course need to have SSH access to your server. These commands are all run from a command prompt.

Comparing Two Files

Classic example of a diff command:

diff <first-file> <second-file>

Here’s a working example, and it’s output:

diff first-file second-file
@@ -1 +1 @@
-This is the first file
\ No newline at end of file
+This is the second file
\ No newline at end of file

Some terminal emulators will color the output to point out exactly what is different:

Diff output

Useful and Interesting diff Options

Most interestingly, if you don’t need to know anything other than whether or not two files are identical, you can use the -s option. For this example I have created two files called “cat” and “dog” which both have identical contents. Using the -s option you can see they are exactly alike:

diff -s cat dog

The result is:

Files cat and dog are identical

If the files are not identical, the command will result in nothing.

In some cases, it can be helpful to paginate the output. As in the case of printing an output for review, you can have diff paginate its output using the pr command.

diff -l cat dog

The output:

2021-06-15 10:32          diff -l first-file second-file          Page 1


1c1
< This is the first file
\ No newline at end of file
---
> This is the second file
\ No newline at end of file

Notice the output contains a header with date, files compared, and a page number. This command can be output to a command line printer program like lp or lpr and printed on paper.

For a complete listing of options be sure to visit the complete diffutils documentation.

Practical Use Cases For Diff

There are many practical use cases for applying diff in real world situations. You can probably think of a dozen, but here are a few that you are sure to encounter at some point, and for which you could easily justify coming up with a diff workflow today.

Server Configuration Files

Your server configuration is precious. Many mission-critical systems running inside your server depend on a few configuration files to make sure all services are tweaked properly and running efficiently. One little change in these configurations can cause a potential catastrophe.

There are instances in which other programs can write data to configuration files. If you find yourself in such an instance you can use diff to compare a current configuration with a backup. Assuming that the configuration you backed up previous was working as expected, you can use diff to compared current files with archived files to isolate the cause of system issues.

But remember, some system files may not be accessible at all user levels. Some file may require root access, which you can only get at the VPS or dedicated level. (Unsure about VPS vs a dedicated server?)

Files Edited by Other Users

Imagine that multiple users are accessing the same set of files. If someone changed a file, how would you know? You are sure to be aware of the error if something breaks, but that would be late. But with the diff command you can check any mission critical files for changes and easily identify potential issues, or at least have an easier time triangulating the most likely cause of an error.

InMotion Hosting Contributor
InMotion Hosting Contributor Content Writer

InMotion Hosting contributors are highly knowledgeable individuals who create relevant content on new trends and troubleshooting techniques to help you achieve your online goals!

More Articles by InMotion Hosting

Was this article helpful? Join the conversation!

Questions about our MailChannels Deployment? We have answers and are here to help!Learn More
+