So sánh các tập tin và lệnh patch

Một phần của tài liệu Giáo trình Tự học hệ điều hành Linux (Nội Bộ) (Trang 95 - 96)

4 Làm quen với hệ thống tập tin ext3fs

4.6 Các câu lệnh cơ bản để làm việc với tập tin và thư mục

4.6.10 So sánh các tập tin và lệnh patch

Có thể bạn khơng để ý nhưng khi làm việc với máy tính cơng việc so sánh nội dung của hai tập tin khác nhau gặp một cách thường xun. Là vì có thể sao chép tập tin một cách dễ dàng, rồi sau đó qn ln là tập tin nào mới hơn hoặc tốt hơn. Vì thế những cơng cụ dùng để so sánh tập tin là cần thiết và tất nhiên là có trong Linux. Cơng cụ đơn giản nhất trong số này là lệnh cmp (compare). Lệnh này chỉ so sánh nội dung của hai tập tin theo từng byte:

[user]$ cmp tập_tin1 tập_tin2

Nếu hai tập tin hồn tồn trùng nhau, thì lệnh hồn thành cơng việc mà khơng đưa ra thơng báo gì, cịn nếu chúng khác nhau thì đưa ra số thứ tự của dịng và byte ở chỗ có sự khác nhau.

Tất nhiên thơng tin mà lệnh cmpđưa ra hơi ít để có thể quyết định chọn tập tin nào trong số hai tập tin này, tập tin nào quan trọng hơn. Vì thế cịn có thể sử dụng câu lệnhdiff để biết được sự khác nhau giữa hai tập tin ở đây là gì. Chỉ cần cho câu lệnh này biết tên hai tập tin mà bạn muốn so sánh. Ví dụ:

teppi82@ThinhQuyen:~> diff ChangeLog ChangeLog2 1c1

< 11 tháng 09 năm 2006, phiên bản 0.9.3 ---

> 18 tháng 09 năm 2006, phiên bản 0.9.3

Thông báo về sự khác nhau sẽ hiển thị trên màn hình (đầu ra tiêu chuẩn). Chúng ta có thể chuyển hướng báo cáo này vào một tập tin:

teppi@ThinhQuyen:~> diff ChangeLog ChangeLog2 > ChangeLog.diff teppi@ThinhQuyen:~> more ChangeLog.diff

1c1

< 11 tháng 09 năm 2006, phiên bản 0.9.3 ---

> 18 tháng 09 năm 2006, phiên bản 0.9.3

Để đánh giá phiên bản của một tập tin thì thuận tiện hơn nếu sử dụng câu lệnhsdiff. Kết quả so sánh khi này sẽ hiển thị ở dạng hai cột, phân cách nhau

bởi các khoảng trắng. Nếu hai cột có cùng số thứ tự khác nhau, thì chúng sẽ cách nhau bởi một dấu gạch thẳng đứng “|”. Nếu một dịng nào đó chỉ có trong tập tin thứ nhất thì nó được đánh dấu bằng một ký tự “<”, nếu khơng có trong tập tin thứ hai – một ký tự “>”.

Cịn có câu lệnhdiff3 cho phép so sánh 3 tập tin một lúc. Nhưng thường sử dụng nhất trên các hệ thống UNIX và Linux vẫn là câu lệnh diff. Có thể dễ

dàng hiểu điều này nếu biết rằng kết quả báo cáo củadiffvề sự khác nhau giữa hai tập tin có thể sử dụng cho câu lệnhpatch. Thông thường khả năng này được

dùng khi phân phối bản cập nhật của chương trình ứng dụng. Lấy ví dụ đơn giản (“một cách ngu ngốc”), một chương trình ứng dụng nào đó được đưa cho người dùng ở dạng tập tin xvnkb-0.2.8.c, có chứa mã nguồn của chương trình này

trên ngơn ngữ C. Sau đó nhà phát triển sửa các lỗi và cập nhật chương trình rồi lưu mã nguồn trong một tập tin khác xvnkb-0.2.9.c. Bây giờ cần đưa những

thay đổi đã làm đến cho người dùng. Tất nhiên là chỉ cần gửi cho người dùng những thay đổi, tức là kết quả báo cáo tạo ra bằng lệnh:

[chuoi]$ diff xvnkb-0.2.8.c xvnkb-0.2.9.c > xvnkb.c.diff

Như vậy tất nhiên là kích thước của tập tinxvnkb.diffsẽ nhỏ hơn nhiều so vớixvnkb-0.2.9.c, sẽ tiết kiệm được dung lượng truyền tải qua mạng Internet

nếu chỉ gửi xvnkb.c.diff. Trong trường hợp chương trình ứng dụng lớn thì sự

tiết kiệm này là đánh kể. Tuy nhiên tiết kiệm cho người dùng khơng phải là ứng dụng chính. Mà sự phát triển của ứng dụng mã mở mới là điểm chính. Chúng ta nhớ rằng một ứng dụng mã mở được phát triển bởi cả một nhóm các nhà phát triển và cộng đồng. Mỗi nhà phát triển sẽ đóng góp đoạn mã của mình bằng chính cách này.

Tuy nhiên sau khi nhận được tập tin *.diff thì cần phải đưa những sửa đổi đã làm vào phiên bản hiện thời. Bài toán này là do patch giải quyết. Đã có

xvnkb-0.2.8.cvàxvnkb.c.diff, chỉ cần chạy lệnh:

[user]$ patch xvnkb-0.2.8.c xvnkb.c.diff > xvnkb-0.2.9.c

sẽ thu được tập tinxvnkb-0.2.9.c.

Một phần của tài liệu Giáo trình Tự học hệ điều hành Linux (Nội Bộ) (Trang 95 - 96)

Tải bản đầy đủ (PDF)

(145 trang)