「less」不會自動解壓縮 gzip 壓縮的文件

「less」不會自動解壓縮 gzip 壓縮的文件

在 Fedora/Redhat/CentOS 上,該less命令似乎可以神奇地檢測 gzip 壓縮檔案並即時解壓縮,因此您可以執行以下操作:

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 虛擬機,看看是否有一些 shell 別名魔法可以讓它工作,但似乎沒有。 CentOS 二進位檔案內建了 gzip 支援嗎?

如果有人知道它如何在 CentOS 上工作和/或如何使其在 Ubuntu 上工作,我將不勝感激。

我知道我能做到

zcat my_stuff.csv.gz | less

但這會讓我的鍵盤磨損得更快。

答案1

less預設不這樣做,但預設有一行~/.bashrc更改了預設行為:

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

請務必不要刪除或註解此行。
有了這個,您就可以在不知情的情況下對壓縮和非壓縮檔案進行分頁,例如

less /var/log/dpkg.log*

其中一些日誌可以被壓縮,而另一些日誌則不能壓縮。

對於透過您存取的 root 帳戶,sudo您無法執行相同的操作,但有兩種解決方法:

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

在第一種情況下,我使用了zless,它也適用於非壓縮檔案。
在第二個中,我新增了保留環境變數的-E選項sudo,以減少您所期望的工作。

答案2

較少的無法讀取 gzip 壓縮文件,您可以在其手冊頁中查看它。有一個腳本,預設安裝在 Ubuntu 和大多數發行版中,稱為茲萊斯,正如您所描述的那樣。

所以答案是使用:

zless my_stuff.csv.gz

Fedora和Ubuntu的差別在於Fedora設定環境變量不那麼開放透過 lesspipe 強制參數:

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

請注意,此命令在 Ubuntu 中不起作用。

相關內容