Trong một trong các bài viết trước đó của chúng tôi, chúng tôi đã giải thích về 9 công cụ so sánh và tìm đặc điểm khác biệt (Diff) tốt nhất cho các hệ thống Linux. Chúng tôi liệt kê một sự kết hợp của các công cụ dòng lệnh và giao diện đồ họa để so sánh và tìm đặc điểm khác biệt giữa các tập tin, mỗi công cụ đều có những tính năng đáng chú ý. Một tiện ích diff hữu ích khác cho Linux là được gọi là sdiff.
sdiff là một tiện ích dòng lệnh đơn giản để hiển thị sự khác biệt giữa hai tập tin và hợp nhất theo cách tương tác. Nó dễ sử dụng và đi kèm với các tùy chọn sử dụng rõ ràng như được giải thích dưới đây.
Cú pháp sử dụng sdiff như sau.
$ sdiff option... file1 file2
Hiển thị Sự khác biệt giữa Hai Tập tin trong Linux
1. Cách dễ nhất để chạy sdiff là cung cấp hai tên tập tin mà bạn đang cố gắng so sánh. Nó sẽ hiển thị sự khác biệt đã hợp nhất cạnh nhau như được hiển thị trong ảnh chụp màn hình dưới đây.
$ cal >cal.txt
$ df -h >du.txt
$ sdiff du.txt cal.txt
Xử lý tất cả tập tin như Tệp văn bản
2. Để xử lý tất cả các tệp tin như văn bản và so sánh chúng từng dòng, dù chúng có phải là tệp tin văn bản hay không, sử dụng tùy chọn -a.
$ sdiff -a du.txt cal.txt
Filesystem Size Used Avail Use% Mounted on | April 2018
udev 3.9G 0 3.9G 0% /dev | Su Mo Tu We Th Fr Sa
tmpfs 788M 9.7M 779M 2% /run | 1 2 3 4 5 6 7
/dev/sda10 324G 265G 43G 87% / | 8 9 10 11 12 13 14
tmpfs 3.9G 274M 3.6G 7% /dev/shm | 15 16 17 18 19 20 21
tmpfs 5.0M 4.0K 5.0M 1% /run/lock | 22 23 24 25 26 27 28
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup | 29 30
/dev/loop2 82M 82M 0 100% /snap/core/4206 |
/dev/loop4 181M 181M 0 100% /snap/vlc/190 <
/dev/loop1 87M 87M 0 100% /snap/core/4407 <
/dev/loop0 189M 189M 0 100% /snap/vlc/158 <
/dev/loop3 83M 83M 0 100% /snap/core/4327 <
cgmfs 100K 0 100K 0% /run/cgmanager/fs <
tmpfs 788M 40K 788M 1% /run/user/1000 <
Bỏ qua tab và khoảng trắng
3. Nếu bạn có các tệp tin với quá nhiều khoảng trắng, bạn có thể yêu cầu sdiff bỏ qua tất cả các khoảng trắng khi so sánh bằng cách sử dụng công cụ -W.
$ sdiff -W du.txt cal.txt
4. Bạn cũng có thể yêu cầu sdiff bỏ qua bất kỳ khoảng trắng nào ở cuối dòng bằng cách sử dụng tùy chọn -z.
$ sdiff -z du.txt cal.txt
5. Ngoài ra, bạn có thể chỉ định cho sdiff bỏ qua các thay đổi do mở rộng tab với cờ -E.
$ sdiff -E du.txt cal.txt
Bỏ qua Chữ hoa/Chữ thường khi So sánh Khác biệt
6. Để bỏ qua chữ hoa/chữ thường (nơi sdiff coi các chữ hoa và chữ thường là giống nhau), sử dụng tùy chọn -i như được hiển thị dưới đây.
$ sdiff -i du.txt cal.txt
Bỏ qua Dòng trống khi So sánh Khác biệt
7. Tùy chọn -B giúp bỏ qua dòng trống trong các tệp tin.
$ sdiff -B du.txt cal.txt
Xác định Số cột Đầu ra
8. sdiff cho phép bạn thiết lập số cột được in (giá trị mặc định là 130), bằng cách sử dụng công cụ -w như sau.
$ sdiff -w 150 du.txt cal.txt
Mở rộng tab thành dấu cách
9. Để mở rộng tab thành dấu cách trong đầu ra, sử dụng tùy chọn -t.
$ sdiff -t du.txt cal.txt
Chạy sdiff theo cách tương tác
10. Cờ -o cho phép chạy sdiff theo cách tương tác hơn và gửi đầu ra vào một tập tin. Trong lệnh này, đầu ra sẽ được gửi đến tệp sdiff.txt, nhấn Enter sau khi nhìn thấy dấu % để mở menu tương tác.
$ sdiff du.txt cal.txt -o sdiff.txt
Filesystem Size Used Avail Use% Mounted on | April 2018
udev 3.9G 0 3.9G 0% /dev | Su Mo Tu We Th Fr Sa
tmpfs 788M 9.7M 779M 2% /run | 1 2 3 4 5 6 7
/dev/sda10 324G 265G 43G 87% / | 8 9 10 11 12 13 14
tmpfs 3.9G 274M 3.6G 7% /dev/shm | 15 16 17 18 19 20 21
tmpfs 5.0M 4.0K 5.0M 1% /run/lock | 22 23 24 25 26 27 28
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup | 29 30
/dev/loop2 82M 82M 0 100% /snap/core/4206 |
/dev/loop4 181M 181M 0 100% /snap/vlc/190 <
/dev/loop1 87M 87M 0 100% /snap/core/4407 <
/dev/loop0 189M 189M 0 100% /snap/vlc/158 <
/dev/loop3 83M 83M 0 100% /snap/core/4327 <
cgmfs 100K 0 100K 0% /run/cgmanager/fs <
tmpfs 788M 40K 788M 1% /run/user/1000 <
%
ed: Edit then use both versions, each decorated with a header. eb: Edit then use both versions. el or e1: Edit then use the left version. er or e2: Edit then use the right version. e: Discard both versions then edit a new one. l or 1: Use the left version. r or 2: Use the right version. s: Silently include common lines. v: Verbosely include common lines. q: Quit. %
Lưu ý rằng bạn cần phải có một số trình chỉnh sửa như ed được cài đặt trên hệ thống của bạn trước khi sử dụng chúng, trong tình huống này.
Gọi Chương trình khác để So sánh Tệp tin
11. Công cụ --diff-program cho phép bạn gọi một công cụ dòng lệnh khác, không phải sdiff để so sánh các tệp tin, ví dụ, bạn có thể gọi chương trình diff như được hiển thị dưới đây.
$ sdiff --diff-program=diff du.txt cal.txt
Để biết thêm thông tin, hãy xem trang man của sdiff.
$ man sdiff
Trong bài viết này, chúng tôi đã xem xét các ví dụ về công cụ dòng lệnh sdiff cho người mới bắt đầu. Nếu bạn có bất kỳ câu hỏi nào, hãy sử dụng biểu mẫu bình luận bên dưới để liên hệ với chúng tôi.