Bài viết này sẽ hướng dẫn các bạn cách xem tập tin bị nén mà không cần giải nén trong hệ điều hành Linux.
1. Hướng dẫn xem tập tin nén
Một số chương trình xử lý tệp tin và văn bản thường được sử dụng thay cho một số lệnh tiêu chuẩn khi làm việc với các tệp tin nén. Trong đó có một phiên bản được thiết kế đặc biệt để xử lý các tệp file bị nén - phiên bản tiện ích này có chữ “z” được đặt trước tên như zcat , zless , zdiff và zgrep là các chương trình tiện ích tiêu biểu làm việc với tệp nén.
Một số câu lệnh cơ bản thường dùng là:
Lệnh | Chức năng |
---|
zcat file.txt.gz | Xem một tệp nén |
zless file.gz hay zmore file.gz | Xem trang thông qua một tệp nén |
zgrep -i less file.gz | Tìm kiếm bên trong tệp nén |
zdiff file1.txt.gz file2.txt.gz | So sánh 2 tệp nén |
Lưu ý: Khi dùng lệnh less với file không nén thì nó vẫn sẽ chạy và bỏ qua giai đoạn giải nén.
Ngoài ra còn có các chương trình tiện ích tương đương cho các phương thức nén khác ngoài gzip. Ta có bzcat và bzless được liên kết với bzip2 , và xzcat và xzless liên kết với xz.
2. File nén gzip
2.1. Lệnh zcat
Lệnh này sử dụng để xem nội dung một tệp nén gzip. Lệnh zcat có chức năng tương tự với lệnh gunzip -c.
Ví dụ: Xem nội dung của tệp bình thường bằng lệnh cat, nén nó bằng lệnh gzip và xem nội dung của tệp được nén bằng zcat.
[root@test1 ~]# cat filegzip
Hello
This is filegzip
[root@test1 ~]# gzip filegzip
[root@test1 ~]# zcat filegzip.gz
Hello
This is filegzip
Ví dụ: Xem nhiều tệp nén dùng lệnh sau với tên tệp:
[root@test1 ~]# zcat filegzip filegzip2
Hello
This is filegzip
Hello 2
This is file gzip2
Ví dụ: Xem nội dung của các tệp sử dụng tùy chọn -f, tương tự như lệnh cat.
[root@test1 ~]# zcat -f filegzip
Hello
This is filegzip
Biết thêm các tuỳ chọn của lệnh zcat dùng:
man zcat
2.2. Lệnh zless và lệnh zmore
Lệnh zless và zmore dùng để phân trang một tệp nén.
Câu lệnh zless mở một tệp đã nén để đọc tương tác và cho phép di chuyển lên xuống và tìm kiếm. Nhập lệnh sau để mở tệp tin nén:
zless file.gz
Lệnh zmore để mở một tệp đã nén để đọc tương tác, có thể di chuyển xuống trang mới và tìm kiếm. Dùng câu lệnh:
zmore file.gz
2.3. Lệnh zgrep
zgrep cho phép tìm kiếm bên trong một tệp nén. Thông thường, chúng ta sử dụng lệnh grep tìm kiếm các chuỗi trong một tệp. Tương tự đó, lệnh zgrep sẽ tìm kiếm chuỗi với sự trợ giúp của grep. Với trường hợp không giải nén, nó sẽ nhập tệp tin vào lệnh grep nếu cần thiết. Do đó sử dụng zgrep cũng tương tự như lệnh grep.
Ví dụ: Tìm kiếm chuỗi "Hello" trong tệp file có tên filegzip2.gz bằng lệnh zgrep.
[root@test1 ~]# zgrep -n Hello filegzip2.gz
1:Hello 2
[root@test1 ~]# zcat filegzip2.gz
Hello 2
This is file gzip2
2.4. Lệnh zdiff
Lệnh zdiff so sánh sự khác nhau giữa 2 file nén bằng gzip. Cú pháp lệnh zdiff như sau:
zdiff [tuỳ chọn] file1 file2
Tương tự zcat, ta xem các tùy chọn của lệnh zdiff bằng:
man zdiff
Ví dụ: So sánh 2 file được nén gzip qua zdiff
[root@test1 ~]# cat > file1.txt
This is line one
This is line two
[root@test1 ~]# cat > file2.txt
This is line 1
This is line two
[root@test1 ~]# diff file1.txt file2.txt
1c1
< This is line one
---
> This is line 1
[root@test1 ~]# gzip file1.txt file2.txt
[root@test1 ~]# zdiff file1.txt.gz file2.txt.gz
1c1
< This is line one
---
> This is line 1
Ví dụ: Dùng lệnh zdiff với tùy chọn -c
[root@test1 ~]# zcat file1.txt.gz
abc
def
ghi
[root@test1 ~]#z cat file2.txt.gz
abc
ghi
klm
[root@test1 ~]# zdiff -c file1.txt.gz file2.txt.gz
*** /dev/fd/5 2013-12-26 11:08:57.341112539 -0800
--- - 2013-12-26 11:08:57.344296058 -0800
***************
*** 1,3 ****
abc
- def
ghi
--- 1,3 ----
abc
ghi
+ klm
Còn lại các cách sử dụng khác, lệnh zdiff hoạt động giống như lệnh diff sự khác biệt là nó lấy các tệp .gz làm đầu vào.
3. File nén bzip2
3.1. Lệnh bzcat
bzcat sẽ hiển thị các tệp được nén bằng lệnh bzip. Cú pháp:
bzcat file
Ví dụ: Xem nội dung với lệnh cat , nén tệp bằng lệnh bzip và xem nội dung của tệp được nén bằng lệnh bzcat.
[root@test1 ~]# cat filebzip1
Hello
This is file bzip1
[root@test1 ~]# cat filebzip2
Hello
This is file bzip2
[root@test1 ~]# bzip2 filebzip1 filebzip2
[root@test1 ~]# bzcat filebzip1.bz2
Hello
This is file bzip1
[root@test1 ~]# bzcat filebzip2.bz2
Hello
This is file bzip2
3.2. Lệnh bzless
Lệnh bzless là một lệnh tương tự như bzmore nhưng có nhiều tính năng hơn. bzless không phải đọc toàn bộ tệp đầu vào trước khi bắt đầu nên với một tệp lớn nó sẽ khởi động nhanh hơn các trình soạn thảo văn bản như vi. Lệnh bzless hoạt động trên cả hai loại tệp nén hoặc không nén.
Lưu ý: Nhấn phím space để xem thêm hoặc tổ hợp Ctrl + Z để đóng tệp. Lệnh bzless sử dụng các tùy chọn tương tự như bzmore.
4. File nén xz
4.1. Lệnh xzcat
xzcat hiển thị các tệp được nén bằng lệnh xz. Cú pháp:
xzcat file
Ví dụ: Xem nội dung của tệp bình thường bằng cat , nén nó bằng lệnh xz và xem nội dung của tệp đã được nén bằng xzcat.
[root@test1 ~]# cat filexz1
Hello
This is filexz1
[root@test1 ~]# cat filexz2
Hello
This is filexz2
[root@test1 ~]# xz filexz1 filexz2
[root@test1 ~]# xzcat filexz1.xz
Hello
This is filexz1
[root@test1 ~]# xzcat filexz2.xz
Hello
This is filexz2
4.2. Lệnh xzless
Câu lệnh xzless dùng để mở một tệp đã nén bằng xz, có thể di chuyển lên xuống và tìm kiếm. Mở tệp tên đã nén với cú pháp sau:
xzless file.xz