88
Làm quen với hệ thống tập tin ext3fs
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ệnh sdiff. 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ệnh diff3 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ủa diff về sự khác nhau giữa
hai tập tin có thể sử dụng cho câu lệnh patch. 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 tin xvnkb.diff sẽ nhỏ hơn nhiều so
với xvnkb-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.c
và 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 tin xvnkb-0.2.9.c.
4.7
Các câu lệnh lưu trữ và nén tập tin
Khi sử dụng Linux rất có thể bạn sẽ ít làm việc với phần lớn các lệnh hệ vỏ
shell
, vì đã có những chương trình tiện ích như Midnight Commander và các