diff thay cho difference (sự sai khác). Lệnh này hiển thị sự sai khác của các file bằng cách so sánh theo dòng. Không giống như các lệnh tương tự như cmp và comm, nó cho thấy dòng nào của file khác với file đối chiếu.
Cú pháp:
diff [options] File1 File2
Giả sử có 2 file tên a.txt và b.txt
$ cat a.txt
Gujarat
Uttar Pradesh
Kolkata
Bihar
Jammu and Kashmir
$ cat b.txt
Tamil Nadu
Gujarat
Andhra Pradesh
Bihar
Uttar pradesh
$ diff a.txt b.txt
0a1
> Tamil Nadu
2,3c3
< Uttar Pradesh
Andhra Pradesh
5c5
Uttar pradesh
Xem xét output của diff:
Dòng thứ nhất gồm thứ tự dòng trong file thứ nhất, một ký hiệu a, và thứ tự dòng trong file thứ 2.
0a1 có nghĩa là sau dòng 0 (đầu file), phải thêm (a=add) Tamil Nadu để giống dòng 1 của file 2.
Dấu < chỉ dòng trong file bên trái và > chỉ dòng ở file bên phải.
Các ký hiệu đặc biệt là
a : add c : change d : delete
Options
- -I : phân biệt chữ HOA/thường
- -c : context mode
$ cat file1.txt
cat
mv
comm
cp
$ cat file2.txt
cat
cp
diff
comm
$ diff -c file1.txt file2.txt
*** file1.txt Thu Jan 11 08:52:37 2018
--- file2.txt Thu Jan 11 08:53:01 2018
***************
*** 1,4 ****
cat
- mv
- comm
cp
--- 1,4 ----
cat
cp
+ diff
+ comm
file1 đánh dấu bằng *** trong khi file2 đánh dấu bằng —
Từ dòng 1 đến dòng 4 của file1, giữ nguyên cat và cp, cần xóa mv và comm để 2 file được giống nhau
Từ dòng 1 đến dòng 4 của file2, giữ nguyên cat và cp, cần thêm diff và comm để 2 file được giống nhau
- -u : unified mode
$ cat file1.txt
cat
mv
comm
cp
$ cat file2.txt
cat
cp
diff
comm
$ diff -u file1.txt file2.txt
--- file1.txt 2018-01-11 10:39:38.237464052 +0000
+++ file2.txt 2018-01-11 10:40:00.323423021 +0000
@@ -1,4 +1,4 @@
cat
-mv
-comm
cp
+diff
+comm
file1 được đánh dấu bằng — và file2 được đánh dấu bằng +++
Dòng @@ cho thấy từ dòng 1 đến 4 của file1 (-) và dòng 1 đến 4 của file2 (+) . Tiếp theo là các việc cần giữ nguyên, bớt, thêm trên file1 để được giống như file2.