«less» не автоматически распаковывает gzipped-файлы

37

В 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, чтобы узнать, есть ли какая-то магия алиасов оболочки, которая заставляет ее работать, но, похоже, нет. Поддерживается ли поддержка gzip в двоичном файле CentOS?

Если кто-то знает, как это работает на CentOS и / или как это можно сделать для работы с Ubuntu, я был бы благодарен.

Я знаю, что могу сделать

zcat my_stuff.csv.gz | less

, но это заставит мою клавиатуру изнашиваться быстрее.

    
задан AndrewR 23.09.2011 в 08:53
источник

2 ответа

32

less не делают этого по умолчанию, но есть строка в умолчанию ~/.bashrc , которая меняет поведение по умолчанию:

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

Обязательно не удаляйте и не комментируйте эту строку.
С помощью этого места вы можете печатать zipped и non-zipped файлы, не зная, как в

less /var/log/dpkg.log*

, где некоторые из журналов могут быть заархивированы, а некоторые другие - незакреплены.

Для учетной записи root, доступной через sudo , вы не можете сделать то же самое, но есть два способа:

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

В первом случае я использовал zless , который работает также и для незашифрованного файла.
Во втором я добавил параметр -E в sudo , чтобы сохранить переменные среды, чтобы сделать меньше работы так, как вы ожидали.

    
ответ дан enzotib 23.09.2011 в 09:29
источник
15

Меньше не может читать gzip-файлы, вы можете проверить его на своей странице руководства. Существует сценарий, установленный по умолчанию в Ubuntu и большинстве дистрибутивов, называемый zless , который работает так, как вы описали.

Таким образом, ответ должен использоваться:

zless my_stuff.csv.gz

Разница между Fedora и Ubuntu заключается в том, что Fedora установила переменную окружения LESSOPEN , чтобы заставить аргумент через lesspipe:

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

Обратите внимание, что эта команда не будет работать в Ubuntu.

    
ответ дан Javier Rivera 23.09.2011 в 09:15