---
title: "How to Compare Files With Diff"
description: "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..."
url: https://www.inmotionhosting.com/support/server/linux/diff/
date: 2021-06-17
modified: 2023-10-31
author: "InMotion Hosting Contributor"
categories: ["Linux"]
type: post
lang: en
---

# How to Compare Files With Diff

![How to compare files with diff](https://www.inmotionhosting.com/support/wp-content/uploads/2021/06/Compare-Files-With-Diff-1024x538.png)

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](https://www.inmotionhosting.com/vps-hosting). 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](#diff)
  - [Comparing Two Files](#compare-files)
  - [Useful and Interesting `diff` Options](#options)
- [Practical Use Cases For Diff](#practical-use-cases)
  - [Server Configuration Files](#configuration-files)
  - [Files Edited by Other Users](#files-edited)

## How To Use The `diff` Command

In order to use the `diff` command you will of course need to have [SSH access](https://www.inmotionhosting.com/support/server/ssh/how-to-login-ssh/) 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](https://www.inmotionhosting.com/support/wp-content/uploads/2021/06/diff_output_colored.png)

### 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](https://www.inmotionhosting.com/support/server/linux/pr/).

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](https://www.gnu.org/software/diffutils/).

## 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](https://www.inmotionhosting.com/vps-vs-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.
