“ น้อยกว่า” จะไม่ขยายไฟล์ gzipped โดยอัตโนมัติ


55

ใน Fedora / Redhat / CentOS lessดูเหมือนว่าคำสั่งจะตรวจจับไฟล์ gzipped อย่างน่าอัศจรรย์และแตกไฟล์ได้ทันทีดังนั้นคุณสามารถทำได้:

less my_stuff.csv.gz

ฉันเพิ่งสังเกตเห็นว่าสิ่งนี้ไม่ทำงานบน Ubuntu 11

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

ฉันได้ตรวจสอบ CentOS VMs ของฉันเพื่อดูว่ามีเวทมนตร์นามแฝงของเชลล์ที่ทำให้มันใช้งานได้ แต่ดูเหมือนจะไม่เป็นเช่นนั้น gzip รองรับอยู่ในตัว CentOS binary หรือไม่?

หากใครรู้ว่ามันทำงานอย่างไรกับ CentOS และ / หรือว่ามันสามารถทำงานกับ Ubuntu ได้อย่างไรฉันก็ต้องขอบคุณ

ฉันรู้ว่าฉันสามารถทำ

zcat my_stuff.csv.gz | less

แต่นั่นจะทำให้แป้นพิมพ์ของฉันสึกหรอเร็วขึ้น


2
บน Ubuntu 16.04 ใช้less myfile.txt.gzงานได้ทันที
Pablo

คำตอบ:


42

lessห้ามทำเช่นนั้นโดยค่าเริ่มต้น แต่มีบรรทัดในค่าเริ่มต้น~/.bashrcที่เปลี่ยนพฤติกรรมเริ่มต้น:

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

อย่าลืมลบหรือแสดงความคิดเห็นบรรทัดนี้
เมื่อใช้สิ่งนี้แล้วคุณสามารถเพจไฟล์ซิปและไฟล์ที่ไม่ได้ซิปโดยไม่ต้องรู้เช่นใน

less /var/log/dpkg.log*

โดยที่ไฟล์บันทึกบางส่วนสามารถซิปได้และบางไฟล์ก็ไม่ได้ซิป

สำหรับบัญชีรูทที่เข้าถึงผ่านsudoคุณไม่สามารถทำสิ่งเดียวกันได้ แต่มีวิธีแก้ไขสองวิธี:

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

ในกรณีแรกที่ฉันใช้zlessมันใช้ได้กับไฟล์ที่ไม่ได้ซิปด้วย
ในอันที่สองฉันเพิ่ม-Eตัวเลือกในsudoการรักษาตัวแปรสภาพแวดล้อมของคุณเพื่อให้ทำงานน้อยลงอย่างที่คุณคาดหวัง


1
บรรทัดแรกไม่อยู่ใน. bashrc โดยค่าเริ่มต้นหรือไม่ ฉันจำไม่ได้ว่าเพิ่มและทำงานได้อย่างราบรื่นที่นี่ (10.4)
johanvdw

2
@jananvdw: ใช่มันคือ: ฉันพูดว่า "มีบรรทัดในค่าเริ่มต้น~/.bashrc" ~/.bashrcสหกรณ์อาจมีการปรับเปลี่ยนของตัวเอง
enzotib

แค่คิดว่าฉันจะเพิ่มว่าในระบบปฏิบัติการ rhel ที่กล่าวถึงในที่นี้คุณจะเห็นสิ่งต่อไปนี้ใน env: LESSOPEN=|/usr/bin/lesspipe.sh %sสิ่งนี้ทำโดยสคริปต์ที่[ -x /usr/bin/lesspipe.sh ] && export LESSOPEN="|/usr/bin/lesspipe.sh %s"เพิ่มไปยัง/etc/profile.d/less.sh
KHobbits

25

น้อยไม่สามารถอ่านไฟล์ gzipped คุณสามารถตรวจสอบได้ในหน้าคนของมัน มีสคริปต์ติดตั้งโดยค่าเริ่มต้นใน Ubuntu และ distros ส่วนใหญ่ที่เรียกว่าzlessซึ่งทำงานได้ตามที่คุณอธิบายไว้

ดังนั้นคำตอบคือใช้:

zless my_stuff.csv.gz

ความแตกต่างระหว่าง Fedora และ Ubuntu คือ Fedora ตั้งค่าตัวแปรสภาพแวดล้อมLESSOPENเพื่อบังคับให้มีการโต้แย้งผ่านตำราน้อย:

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

โปรดทราบว่าคำสั่งนี้จะไม่ทำงานใน Ubuntu


บน Ubuntu zlessเป็นเชลล์สคริปต์ที่ใช้lessและlesspipeเป็นแกนกลางดังนั้นจึงlessไม่สามารถเชื่อมโยงไปถึงzlessได้ ฉันไม่คิดว่ามันจะแตกต่างจาก distros อื่น ๆ
enzotib

โอ้ ... คุณทำให้ฉันบูตติดตั้ง Fedora ของฉัน;) แก้ไข
Javier Rivera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.