Bài viết này giới thiệu các bạn cách xem nội dung file nén mà không cần giải nén trên hệ điều hành Linux.
1. Xem tập tin nén
Khi làm việc với các tệp nén, một số lệnh tiêu chuẩn không được sử dụng. Một số chương trình xử lý tệp và văn bản thường được sử dụng, có một phiên bản được thiết kế đặc biệt để làm việc trực tiếp với các tệp nén. Các tiện ích liên quan này có chữ "z" được đặt trước tên của chúng. Ví dụ: Các chương trình tiện ích như zcat
, zless
, zdiff
và zgrep
.
Bảng liệt kê một số lệnh cơ bản thường dùng:
Lệnh | Chức năng |
---|---|
zcat file.txt.gz | Xem một tệp nén |
| 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 trên file không nén thì nó vẫn sẽ hoạt động 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. Chúng 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
Dùng để xem nội dung một tệp nén gzip. Lệnh zcat
có chức năng giống 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, sử 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 thông thường,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 này ta 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.
2.2.1: Lệnh zless
Lệnh zless
dùng mở một tệp đã nén để đọc tương tác, cho phép di chuyển lên xuống và tìm kiếm. Để mở tệp tin đã nén:
zless file.gz
2.2.2: Lệnh zmore
Lệnh zmore
dùng mở một tệp đã nén để đọc tương tác, cho phép di chuyển xuống trang mới và tìm kiếm. Để mở tệp tin đã nén:
zmore file.gz
2.3: Lệnh zgrep
Lệnh này cho phép tìm kiếm bên trong một tệp nén. Chúng ta đều 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 lệnh grep
. Trong trường hợp không giải nén, nó sẽ nhập tệp vào lệnh grep
nếu cần thiết. Việc sử dụng zgrep
tương tự như lệnh grep
.
Ví dụ: Tìm kiếm chuỗi "Hello" trong tệp 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
dùng để so sánh sự khác nhau giữa 2 file nén bằng gzip. Cú pháp lệnh zdiff
:
zdiff [tuỳ chọn] file1 file2
Để xem các tùy chọn của lệnh zdiff
ta dùng: man zdiff
Ví dụ: Dùng lệnh zdiff
để so sánh 2 file khi đã được nén gzip.
[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
Đối với tất cả 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
Lệnh 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 của tệp bình thường bằng lệnh cat
, nén nó bằng lệnh bzip và xem nội dung của tệp được nén bằng 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 nó có nhiều tính năng hơn. Lệnh bzless
không phải đọc toàn bộ tệp đầu vào trước khi bắt đầu, vì vậy với một tệp lớn, nó 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 (được nén hoặc không nén).
Lưu ý: Nhấn phím space để xem thêm hoặc 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
Lệnh xzcat
sẽ 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 lệnh 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
Lệnh xzless
dùng mở một tệp đã nén bằng xz để đọc tương tác, cho phép di chuyển lên xuống và tìm kiếm. Để mở tệp tin đã nén:
xzless file.xz