«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*

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

Для учетной записи 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 устанавливает переменную окруженияLESSOPENчтобы протолкнуть аргумент через lesspipe:

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

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

Связанный контент