「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 VM を調べて、シェル エイリアス マジックで動作するかどうかを確認しましたが、どうやらそうではないようです。gzip サポートは CentOS バイナリに組み込まれているのでしょうか?

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*

一部のログは圧縮可能で、他のログは圧縮できません。

経由でアクセスしたルート アカウントの場合、sudo同じことは実行できませんが、回避策が 2 つあります。

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

最初のケースでは を使用しましたがzless、これは非圧縮ファイルでも機能します。2
番目のケースでは、環境変数を保持するため-Eの のオプションを追加してsudo、予想どおりに作業量を減らしました。

答え2

少ないgzip圧縮されたファイルを読むことができない場合は、マニュアルページで確認することができます。Ubuntuやほとんどのディストリビューションにデフォルトでインストールされているスクリプトがあります。なし、それはあなたが説明したとおりに機能します。

したがって、答えは次のようになります。

zless my_stuff.csv.gz

FedoraとUbuntuの違いは、Fedoraでは環境変数を設定することですレスオープンlesspipe を通して引数を強制するには:

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

このコマンドは Ubuntu では動作しないことに注意してください。

関連情報