Câu 1Trong đầu ra định dạng hợp nhất của diff, ký hiệu nào bắt đầu một dòng bị xóa (dòng đã có trong tệp cũ)?
Khác biệt giữa các tệp — diff
Tìm hiểu cách kiểm tra khác biệt giữa hai tệp bằng diff. Bạn sẽ đọc được những dòng nào đã được thêm, xóa hay thay đổi, qua sơ đồ và terminal thực hành ngay trong trình duyệt.
Khi nào dùng diff
Dùng nó khi bạn muốn kiểm tra bạn đã thay đổi gì sau khi sửa một tệp, hoặc xem hai tệp có cùng nội dung không. Đưa cho nó hai tệp và nó chỉ hiển thị những dòng khác nhau.
So sánh hai tệp — diff
diff so sánh hai tệp và chỉ hiển thị những phần khác nhau. Bạn dùng nó dưới dạng diff old.txt new.txt, xem tệp thứ nhất là bản cũ (trước) và tệp thứ hai là bản mới (sau). Các dòng giống nhau không được in ra — chỉ những khác biệt được báo cáo.
diff old.txt new.txt đối chiếu hai tệp và chỉ hiển thị dòng thứ hai khác nhau dưới dạng -banana (cũ) và +grape (mới). Các dòng apple và cherry giống nhau không được in ra.Trong terminal trình duyệt, diff hiển thị khác biệt theo định dạng hợp nhất (unified format). Phần --- và +++ ở đầu là tên của hai tệp được so sánh, dòng @@ đánh dấu vị trí xảy ra thay đổi, và trong phần thân mỗi dòng bị xóa bắt đầu bằng - còn mỗi dòng được thêm bắt đầu bằng +. Các dòng không đổi bắt đầu bằng một khoảng trắng và xuất hiện kèm theo làm ngữ cảnh.
| Ký hiệu | Ý nghĩa |
|---|---|
--- old.txt | Tên tệp thứ nhất (cũ) được so sánh |
+++ new.txt | Tên tệp thứ hai (mới) được so sánh |
@@ -N,M +N,M @@ | Thông tin vị trí nơi thay đổi xảy ra |
- dòng | Một dòng bị xóa (đã có trong tệp cũ) |
+ dòng | Một dòng được thêm (có trong tệp mới) |
dòng (khoảng trắng đầu dòng) | Một dòng không đổi, hiển thị kèm theo làm ngữ cảnh |
@@ đánh dấu vị trí thay đổi, - là dòng bị xóa (cũ), và + là dòng được thêm (mới). Các dòng không đổi xuất hiện kèm theo với một khoảng trắng ở đầu.printf 'apple\nbanana\ncherry\n' > old.txt # tạo tệp mẫu
printf 'apple\ngrape\ncherry\n' > new.txt # tệp mẫu khác một dòng
diff old.txt new.txt
--- old.txt
+++ new.txt
@@ -1,3 +1,3 @@
apple
-banana
+grape
cherry
Đọc phần thêm và phần xóa
Khác biệt không chỉ là viết lại. Khi một dòng chỉ được thêm vào tệp bên phải, bạn chỉ nhận một dòng +; khi một dòng bị xóa khỏi tệp bên trái, bạn chỉ nhận một dòng -. Thay vì - và + xuất hiện thành cặp như khi viết lại, chỉ một trong hai xuất hiện là dấu hiệu của việc thêm hoặc xóa. Hãy đổi thứ tự so sánh, và cùng một khác biệt sẽ đảo giữa + (được thêm) và - (bị xóa).
printf 'one\ntwo\n' > base.txt # tạo tệp mẫu
printf 'one\ntwo\nthree\n' > more.txt # tệp mẫu thêm một dòng
diff base.txt more.txt
--- base.txt
+++ more.txt
@@ -1,2 +1,3 @@
one
two
+three
diff base.txt more.txt hiển thị +three (được thêm), còn lệnh đảo ngược diff more.txt base.txt hiển thị -three (bị xóa).diff và patch, cùng cách các môi trường khác hiển thị
Bản diff theo định dạng hợp nhất mà diff tạo ra có thể áp dụng nguyên vẹn vào một tệp khác bằng lệnh patch. Khi một nhóm trao đổi các bản sửa, việc chuyển qua lại bản diff này (một patch) là phổ biến. Khóa học này tập trung vào việc đọc diff và không đề cập đến việc áp dụng chúng ở đây.
Trong terminal trình duyệt của khóa học này, diff xuất trực tiếp định dạng hợp nhất. Với GNU diff trên Ubuntu và tương tự, diff đơn thuần hiển thị định dạng truyền thống dùng 2c2 và < / >, còn thêm diff -u sẽ cho ra cùng định dạng hợp nhất được dùng trong khóa học này.
Kiểm tra kiến thức
Hãy trả lời từng câu hỏi một.
Câu 2Một dòng như @@ -1,3 +1,3 @@ cho biết điều gì?
Câu 3Khi một dòng chỉ được thêm vào tệp bên phải, đầu ra của diff trông như thế nào?