web-dev-qa-db-ja.com

「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

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

54
AndrewR

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に追加して、環境変数を保持し、予想どおりに作業を減らしました。

42
enzotib

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

答えは次のとおりです。

zless my_stuff.csv.gz

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

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

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

25
Javier Rivera