"less" não descompacta automaticamente arquivos compactados

"less" não descompacta automaticamente arquivos compactados

No Fedora/Redhat/CentOS, o lesscomando parece detectar magicamente um arquivo compactado e descompactá-lo instantaneamente, para que você possa fazer:

less my_stuff.csv.gz

Acabei de notar que isso não funciona no Ubuntu 11

less my_stuff.csv.gz
"my_stuff.csv.gz" may be a binary file.  See it anyway? 

Tenho examinado minhas VMs CentOS para ver se há alguma mágica de alias de shell que faz com que funcione, mas parece não haver. O suporte gzip está integrado ao binário CentOS?

Se alguém souber como isso funciona no CentOS e/ou como pode funcionar no Ubuntu, ficaria grato.

Estou ciente de que posso fazer

zcat my_stuff.csv.gz | less

mas isso faria com que meu teclado se desgastasse mais rapidamente.

Responder1

lessnão faça isso por padrão, mas há uma linha no padrão ~/.bashrcque altera o comportamento padrão:

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

Certifique-se de não remover ou comentar esta linha.
Com isso implementado, você pode paginar arquivos compactados e não compactados sem saber, como em

less /var/log/dpkg.log*

onde alguns dos logs podem ser compactados e outros não.

Para a conta root acessada por meio de sudovocê, você não pode fazer a mesma coisa, mas há duas soluções alternativas:

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

No primeiro caso que usei zless, isso funciona também para arquivos não compactados.
No segundo adicionei a -Eopção de sudopreservar suas variáveis ​​de ambiente, para fazer menos trabalho como seria de esperar.

Responder2

Menosnão consegue ler arquivos compactados, você pode verificar isso em sua página de manual. Existe um script, instalado por padrão no Ubuntu e na maioria das distros, chamadosem z, isso funciona como você descreveu.

Então a resposta é usar:

zless my_stuff.csv.gz

A diferença entre o Fedora e o Ubuntu é que o Fedora define a variável de ambienteLIÇÃO ABERTApara forçar o argumento através de lesspipe:

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

Observe que este comando não funcionará no Ubuntu.

informação relacionada