Cách xem file nén mà không cần giải nén trên Linux Image Cách xem file nén mà không cần giải nén trên Linux

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, zdiffzgrep.

Bảng liệt kê một số lệnh cơ bản thường dùng:

LệnhChức năng
zcat file.txt.gzXem 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.gzTìm kiếm bên trong tệp nén
zdiff file1.txt.gz file2.txt.gzSo 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ó bzcatbzless được liên kết với bzip2, và xzcatxzless 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 zlesszmore 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