「less」はgzip圧縮されたファイルを自動的に解凍しません


55

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

しかし、それは私のキーボードをより早くすり減らせます。


2
Ubuntu 16.04ではless myfile.txt.gz、そのまま使用できます。
パブロ

回答:


42

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期待どおりに作業を減らしました。


1
デフォルトでは、.bashrcに最初の行はありませんか?追加したことを思い出せず、ここでシームレスに機能します(10.4)。
-johanvdw

2
@johanvdw:はい、そうです:「デフォルトに行があります~/.bashrc」と言いました。OPはそれ自身を変更できました~/.bashrc
-enzotib

ちょうど私が上で、それを追加しようと思いましたRHEL OSのこの作品どこ述べたように、あなたが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

Lessはgzip圧縮されたファイルを読むことができません。manページで確認できます。Ubuntuにデフォルトでインストールされるスクリプトとzlessと呼ばれるほとんどのディストリビューションがあり、説明どおりに動作します。

したがって、答えは以下を使用することです。

zless my_stuff.csv.gz

FedoraとUbuntuの違いは、Fedoraが環境変数LESSOPENを設定してlesspipeを通じて引数を強制することです:

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

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


Ubuntuでzless使用するシェルスクリプトであるlesslesspipe、そのコアに、そうlessにシンボリックリンクすることはできませんzless。私はそれが他のディストリビューションで異なるとは思わない。
エンゾチブ

ああ...あなたは私のFedoraインストールを起動させました;)。編集済み。
ハビエルリベラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.