Zcat - Lệnh Linux - Lệnh Unix

Tên

gzip, gunzip, zcat - nén hoặc mở rộng tệp

Tóm tắc

gzip [ -acdfhlLnNrtvV19 ] [ -S hậu tố ] [ tên ... ]
gunzip [ -acfhlLnNrtvV ] [ -S hậu tố ] [ tên ... ]
zcat [ -fhLV ] [ tên ... ]

Sự miêu tả

Gzip giảm kích thước của các tập tin được đặt tên bằng cách sử dụng mã hóa Lempel-Ziv (LZ77). Bất cứ khi nào có thể, mỗi tệp được thay thế bằng một tệp có đuôi mở rộng .gz , trong khi vẫn giữ nguyên chế độ quyền sở hữu, thời gian truy cập và sửa đổi. (Phần mở rộng mặc định là -gz cho VMS, z cho MSDOS, OS / 2 FAT, Windows NT FAT và Atari.) Nếu không có tệp nào được chỉ định, hoặc nếu tên tệp là "-", đầu vào tiêu chuẩn sẽ được nén thành tiêu chuẩn đầu ra. Gzip sẽ chỉ cố gắng nén các tệp thông thường. Đặc biệt, nó sẽ bỏ qua các liên kết tượng trưng.

Nếu tên tệp nén quá dài đối với hệ thống tệp của nó, gzip sẽ cắt bớt nó. Gzip cố gắng cắt ngắn chỉ các phần của tên tệp dài hơn 3 ký tự. (Một phần được phân định bằng dấu chấm.) Nếu tên chỉ bao gồm các phần nhỏ, các phần dài nhất sẽ bị cắt ngắn. Ví dụ: nếu tên tệp được giới hạn trong 14 ký tự, gzip.msdos.exe sẽ được nén thành gzi.msd.exe.gz. Tên không được cắt ngắn trên các hệ thống không có giới hạn về độ dài tên tệp.

Theo mặc định, gzip giữ tên tệp gốc và dấu thời gian trong tệp nén. Chúng được sử dụng khi giải nén tệp bằng tùy chọn -N . Điều này rất hữu ích khi tên tệp nén bị cắt ngắn hoặc khi dấu thời gian không được giữ nguyên sau khi truyền tệp.

Các tệp nén có thể được khôi phục về dạng ban đầu của chúng bằng gzip -d hoặc gunzip hoặc zcat. Nếu tên gốc được lưu trong tệp nén không phù hợp với hệ thống tệp của nó, tên mới được tạo từ tên ban đầu để làm cho nó hợp pháp.

gunzip lấy danh sách các tệp trên dòng lệnh của nó và thay thế từng tệp có tên kết thúc bằng .gz, -gz, .z, -z, _z hoặc .Z và bắt đầu bằng số ma thuật chính xác với tệp không nén mà không có phần mở rộng gốc . gunzip cũng nhận ra các phần mở rộng đặc biệt .tgz.taz dưới dạng viết tắt cho .tar.gz.tar.Z tương ứng. Khi nén, gzip sử dụng phần mở rộng .tgz nếu cần thiết thay vì cắt bớt một tệp có phần mở rộng .tar .

gunzip hiện có thể giải nén các tệp được tạo bởi gzip, zip, compress, compress -H hoặc pack. Việc phát hiện định dạng đầu vào là tự động. Khi sử dụng hai định dạng đầu tiên, gunzip sẽ kiểm tra CRC 32 bit. Đối với gói, gunzip kiểm tra độ dài không nén. Định dạng nén chuẩn không được thiết kế để cho phép kiểm tra tính nhất quán. Tuy nhiên gunzip đôi khi có thể phát hiện một tập tin .Z xấu. Nếu bạn gặp lỗi khi giải nén tệp .Z , đừng cho rằng tệp .Z là chính xác vì việc giải nén tiêu chuẩn không phàn nàn. Điều này thường có nghĩa là giải nén tiêu chuẩn không kiểm tra đầu vào của nó và tạo ra kết quả đầu ra rác một cách vui vẻ. Định dạng nén -H SCO (phương pháp nén lzh) không bao gồm CRC mà còn cho phép kiểm tra tính nhất quán.

Các tệp được tạo bởi zip có thể được giải nén bởi gzip chỉ khi chúng có một thành viên được nén bằng phương pháp 'giảm phát'. Tính năng này chỉ nhằm mục đích giúp chuyển đổi các tệp tar.zip sang định dạng tar.gz. Để trích xuất các tệp zip với một số thành viên, hãy sử dụng giải nén thay vì sử dụng gunzip.

zcat giống với gunzip -c. (Trên một số hệ thống, zcat có thể được cài đặt như gzcat để bảo toàn liên kết gốc để nén.) Zcat giải nén danh sách các tệp trên dòng lệnh hoặc đầu vào tiêu chuẩn của nó và ghi dữ liệu chưa nén vào đầu ra tiêu chuẩn. zcat sẽ giải nén các tập tin có số ma thuật chính xác cho dù chúng có hậu tố .gz hay không.

Gzip sử dụng thuật toán Lempel-Ziv được sử dụng trong zip và PKZIP. Lượng nén thu được phụ thuộc vào kích thước của đầu vào và sự phân bố của các chất nền thông thường. Thông thường, văn bản như mã nguồn hoặc tiếng Anh được giảm 60-70%. Nén nói chung là tốt hơn nhiều so với mà đạt được bởi LZW (như được sử dụng trong nén ), Huffman mã hóa (như được sử dụng trong gói ), hoặc mã hóa Huffman thích ứng ( nhỏ gọn ).

Nén luôn được thực hiện, ngay cả khi tệp nén lớn hơn một chút so với tệp gốc. Sự mở rộng trường hợp xấu nhất là một vài byte cho tiêu đề của tệp gzip, cộng với 5 byte mỗi khối 32K hoặc tỷ lệ mở rộng 0,015% cho các tệp lớn. Lưu ý rằng số lượng ổ đĩa được sử dụng thực tế hầu như không bao giờ tăng lên. gzip giữ nguyên chế độ, quyền sở hữu và dấu thời gian của các tệp khi nén hoặc giải nén.

TÙY CHỌN

-a --ascii

Chế độ văn bản Ascii: chuyển đổi cuối dòng bằng cách sử dụng các quy ước cục bộ. Tùy chọn này chỉ được hỗ trợ trên một số hệ thống không phải Unix. Đối với MSDOS, CR LF được chuyển thành LF khi nén và LF được chuyển thành CR LF khi giải nén.

-c --stdout --to-stdout

Viết đầu ra trên đầu ra tiêu chuẩn; giữ nguyên các tệp gốc. Nếu có một số tệp đầu vào, đầu ra bao gồm một chuỗi các thành viên được nén độc lập. Để có được nén tốt hơn, nối tất cả các tệp đầu vào trước khi nén chúng.

-d --decompress --uncompress

Giải nén.

-f --force

Buộc nén hoặc giải nén ngay cả khi tệp có nhiều liên kết hoặc tệp tương ứng đã tồn tại hoặc nếu dữ liệu nén được đọc từ hoặc được ghi vào thiết bị đầu cuối. Nếu dữ liệu đầu vào không có định dạng được nhận dạng bởi gzip và nếu tùy chọn --stdout cũng được cung cấp, hãy sao chép dữ liệu đầu vào mà không thay đổi thành ouput tiêu chuẩn: hãy để zcat hoạt động như con mèo. Nếu -f không được cung cấp và khi không chạy ở chế độ nền, gzip sẽ nhắc xác minh xem tệp hiện có có bị ghi đè hay không.

-h --help

Hiển thị màn hình trợ giúp và thoát.

-l - danh sách

Đối với mỗi tệp nén, hãy liệt kê các trường sau:


kích thước nén: kích thước của tệp nén
kích thước không nén: kích thước của tệp không nén
tỷ lệ: tỷ lệ nén (0.0% nếu chưa biết)
uncompressed_name: tên của tập tin không nén

Kích thước không nén được cho là -1 đối với các tệp không có định dạng gzip, chẳng hạn như tệp nén .Z. Để có được kích thước không nén cho một tệp như vậy, bạn có thể sử dụng:


tập tin zcat.Z | wc -c

Kết hợp với tùy chọn --verbose, các trường sau cũng được hiển thị:


phương pháp: phương pháp nén
crc: CRC 32 bit của dữ liệu chưa nén
ngày & giờ: dấu thời gian cho tệp không nén

Các phương pháp nén hiện đang được hỗ trợ là deflate, compress, lzh (SCO compress -H) và pack. Crc được đưa ra dưới dạng ffffffff cho một tệp không có định dạng gzip.

Với --name, tên, ngày tháng và thời gian không nén là những tên được lưu trữ trong tệp nén nếu có.

Với --verbose, tổng kích thước và tỷ lệ nén cho tất cả các tệp cũng được hiển thị, trừ khi một số kích thước không xác định. Với --quiet, tiêu đề và các dòng tổng không được hiển thị.

-L --license

Hiển thị giấy phép gzip và thoát.

-n --no-name

Khi nén, không lưu tên tệp ban đầu và dấu thời gian theo mặc định. (Tên gốc luôn được lưu nếu tên phải được cắt ngắn.) Khi giải nén, không khôi phục tên tệp gốc nếu có (chỉ xóa hậu tố gzip từ tên tệp đã nén) và không khôi phục dấu thời gian ban đầu nếu có (sao chép nó từ tập tin nén). Tùy chọn này là tùy chọn mặc định khi giải nén.

-N --name

Khi nén, luôn lưu tên tệp gốc và dấu thời gian; đây là mặc định. Khi giải nén, khôi phục tên tệp ban đầu và dấu thời gian nếu có. Tùy chọn này hữu ích trên các hệ thống có giới hạn về độ dài tên tệp hoặc khi dấu thời gian bị mất sau khi truyền tệp.

-q --quiet

Ngăn chặn tất cả các cảnh báo.

-r --recursive

Du lịch cấu trúc thư mục đệ quy. Nếu bất kỳ tên tệp nào được chỉ định trên dòng lệnh là các thư mục, gzip sẽ đi sâu vào thư mục và nén tất cả các tệp mà nó tìm thấy ở đó (hoặc giải nén chúng trong trường hợp của gunzip ).

-S .suf --suffix .suf

Sử dụng hậu tố .suf thay vì .gz. Bất kỳ hậu tố có thể được đưa ra, nhưng tránh hậu tố khác với .z và .gz để tránh nhầm lẫn khi các tập tin được chuyển sang các hệ thống khác. Hậu tố null buộc gunzip phải thử giải nén trên tất cả các tệp đã cho bất kể hậu tố, như sau:


gunzip -S "" * (*. * cho MSDOS)

Các phiên bản trước của gzip đã sử dụng hậu tố .z. Điều này đã được thay đổi để tránh xung đột với gói (1).

-t --test

Kiểm tra. Kiểm tra tính toàn vẹn của tập tin nén.

-v - tiết

Verbose. Hiển thị tên và tỷ lệ phần trăm giảm cho mỗi tập tin nén hoặc giải nén.

-V - phiên bản

Phiên bản. Hiển thị số phiên bản và tùy chọn biên dịch rồi thoát.

- # --fast --best

Điều chỉnh tốc độ nén bằng cách sử dụng số được chỉ định # , trong đó -1 hoặc --fast cho biết phương pháp nén nhanh nhất (ít nén hơn) và -9 hoặc --best cho biết phương pháp nén chậm nhất (nén tốt nhất). Mức nén mặc định là -6 (có nghĩa là, thiên về nén cao với chi phí của tốc độ).

Sử dụng nâng cao

Nhiều tệp nén có thể được ghép nối. Trong trường hợp này, gunzip sẽ trích xuất tất cả thành viên cùng một lúc. Ví dụ:


gzip -c file1> foo.gz
gzip -c file2 >> foo.gz

Sau đó


gunzip -c foo

tương đương với


cat file1 file2

Trong trường hợp hư hỏng cho một thành viên của tệp .gz, các thành viên khác vẫn có thể được phục hồi (nếu thành viên bị hỏng bị xóa). Tuy nhiên, bạn có thể nén tốt hơn bằng cách nén tất cả thành viên cùng một lúc:


cat file1 file2 | gzip> foo.gz

nén tốt hơn


gzip -c file1 file2> foo.gz

Nếu bạn muốn nén lại các tệp được ghép nối để có được nén tốt hơn, hãy làm:


gzip -cd old.gz | gzip> new.gz

Nếu một tệp nén bao gồm một số thành viên, kích thước không nén và CRC được báo cáo theo tùy chọn --list chỉ áp dụng cho thành viên cuối cùng. Nếu bạn cần kích thước không nén cho tất cả các thành viên, bạn có thể sử dụng:


tệp gzip -cd.gz | wc -c

Nếu bạn muốn tạo một tệp lưu trữ duy nhất có nhiều thành viên để các thành viên sau đó có thể được trích xuất độc lập, hãy sử dụng một bộ lưu trữ như tar hoặc zip. GNU tar hỗ trợ tùy chọn -z để gọi gzip trong suốt. gzip được thiết kế như một bổ sung cho tar , không phải là một sự thay thế.

XEM THÊM

nén (1)

Định dạng tệp gzip được chỉ định trong P. Deutsch, định dạng tệp định dạng GZIP phiên bản 4.3, , Internet RFC 1952 (tháng 5 năm 1996). Định dạng giảm phát zip được xác định trong P. Deutsch, Đặc tả Định dạng Dữ liệu Nén DEFLATE phiên bản 1.3, , Internet RFC 1951 (tháng 5 năm 1996).

Quan trọng: Sử dụng lệnh man ( % man ) để xem cách một lệnh được sử dụng trên máy tính cụ thể của bạn.