Ít hơn, tôi không tự động giải nén các tập tin được nén.


55

Trên Fedora / Redhat / CentOS, lesslệnh dường như phát hiện một cách kỳ diệu một tệp được nén và giải nén nó một cách nhanh chóng, vì vậy bạn có thể làm:

less my_stuff.csv.gz

Tôi vừa nhận thấy điều này không hoạt động trên Ubuntu 11

less my_stuff.csv.gz
"my_stuff.csv.gz" may be a binary file.  See it anyway? 

Tôi đã kiểm tra máy ảo CentOS của mình để xem liệu có phép thuật bí danh nào đó làm cho nó hoạt động không nhưng dường như không có. Là hỗ trợ gzip chỉ được tích hợp vào nhị phân CentOS?

Nếu bất cứ ai biết cách thức hoạt động trên CentOS và / hoặc cách nó có thể được thực hiện để hoạt động trên Ubuntu, tôi rất biết ơn.

Tôi biết tôi có thể làm

zcat my_stuff.csv.gz | less

nhưng điều đó sẽ làm cho bàn phím của tôi bị mòn nhanh hơn.


2
Trên Ubuntu 16.04 less myfile.txt.gzhoạt động vượt trội .
Pablo A

Câu trả lời:


42

lesskhông làm điều đó theo mặc định, nhưng có một dòng trong mặc định ~/.bashrcthay đổi hành vi mặc định:

[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

Hãy chắc chắn để không loại bỏ hoặc bình luận dòng này.
Với vị trí này, bạn có thể trang các tệp nén và không nén mà không biết, như trong

less /var/log/dpkg.log*

trong đó một số nhật ký có thể được nén và một số khác không được nén.

Đối với tài khoản root được truy cập thông qua sudobạn không thể thực hiện điều tương tự, nhưng có hai cách giải quyết:

  1. sudo zless file*
  2. sudo -E less file*

Trong trường hợp đầu tiên tôi sử dụng zless, nó cũng hoạt động với tệp không nén.
Trong phần thứ hai, tôi đã thêm -Etùy chọn để sudobảo toàn các biến môi trường của bạn, để thực hiện ít công việc hơn bạn mong đợi.


1
Không phải là dòng đầu tiên có trong .bashrc theo mặc định? Tôi không thể nhớ thêm nó và nó hoạt động trơn tru ở đây (10,4).
johanvdw

2
@johanvdw: đúng vậy: Tôi đã nói "có một dòng trong mặc định ~/.bashrc". OP có thể đã tự sửa đổi ~/.bashrc.
enzotib

Chỉ cần nghĩ rằng tôi đã thêm, rằng trên hệ điều hành của rrc đã đề cập đến nơi hoạt động này, bạn sẽ thấy phần sau trong env: LESSOPEN=|/usr/bin/lesspipe.sh %sĐiều này được thực hiện bởi một tập lệnh có chứa [ -x /usr/bin/lesspipe.sh ] && export LESSOPEN="|/usr/bin/lesspipe.sh %s"được thêm vào/etc/profile.d/less.sh
KHobbits

25

Ít hơn không thể đọc các tệp được nén, bạn có thể kiểm tra nó trong trang man của nó. Có một tập lệnh, được cài đặt theo mặc định trong Ubuntu và hầu hết các bản phân phối, được gọi là zless , hoạt động như bạn mô tả.

Vì vậy, câu trả lời là sử dụng:

zless my_stuff.csv.gz

Sự khác biệt giữa Fedora và Ubuntu là Fedora đã đặt biến môi trường LESSOPEN để buộc đối số thông qua lesspipe:

echo $LESSOPEN
||/usr/bin/lesspipe.sh %s

Lưu ý rằng lệnh này sẽ không hoạt động trong Ubuntu.


Trên Ubuntu zlesslà một tập lệnh shell sử dụng lesslesspipetrong lõi của nó, vì vậy lesskhông thể là một liên kết tượng trưng đến zless. Tôi không nghĩ nó khác ở các bản phát hành khác.
enzotib

Ồ ... bạn đã khiến tôi khởi động cài đặt Fedora của mình;). Đã chỉnh sửa.
Javier Rivera
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.