Mostra o conteúdo do arquivo tar com 'less' no FreeBSD

1

Constantemente alternando entre o Linux e o FreeBSD, continuo batendo nisto. Quando eu faço:

 less something.tgz

Sistemas Linux (bem ... Ubuntu para ser preciso) me mostram uma lista de arquivos, que é o que eu geralmente quero, enquanto o FreeBSD mostra um conteúdo binário. Como esse comportamento (mostrando o conteúdo do arquivo) é realizado no linux e é possível replicá-lo nos sistemas FreeBSD?

    
por Alex N 20.10.2009 / 17:45

5 respostas

4

Dê uma olhada na página do manual de lesspipe (ou lessopen ) em uma caixa do Ubuntu.

Com a versão Debian / Ubuntu, tudo que você precisa fazer é adicionar

eval "$(lesspipe)"

para o seu .bashrc .

No FreeBSD você encontra o script lesspipe.sh em uma porta separada chamada lesspipe, que usa uma versão do sourceforge (que não tem a configuração conveniente acima, porém - a página de manual de menos tem mais informações).

Aqui está uma versão diferente do script que encontrei em freshmeat : lesspipe, um addon para o navegador menos

    
por 20.10.2009 / 17:52
7

Eu vou ser o velho rabugento aqui que grita "Ei, filhos, saiam do meu gramado!" mas ...

Você não está fazendo certo.

Menos e mais, os dois programas de pager comuns devem ser executados no final de uma sequência de comandos canalizados. Esses programas não são projetados para ler qualquer tipo de arquivo aleatório, como um arquivo cpio ou um arquivo tar ou um arquivo bzip2ed criptografado com gzip codificado por uuencoded.

Aprenda a maneira unix de fazer as coisas e você começará a entender o que está acontecendo com um monte de outras coisas também. Desta forma, você aprenderá sobre coisas como stdin e stdout e stderr.

gzip -d < arquivo | tar -tvf - | menos

Você vai me agradecer depois.

    
por 20.10.2009 / 19:58
5

Você pode ver algo útil com zless somefile.tgz , mas acho que o que você realmente quer fazer é isso:

tar ztvf somefile.tgz |less

que funcionará em todos os sistemas. Note que o t apenas diz a você o que existe ao contrário de x, que extrai arquivos.

    
por 20.10.2009 / 17:56
2

Isso é feito usando o pré-processador "lessopen":

michael@challenger:~> echo $LESSOPEN
lessopen.sh %s
michael@challenger:~> which lessopen.sh
/usr/bin/lessopen.sh
michael@challenger:~> less logs.zip
Archive:  ./logs.zip

 Length   Method    Size  Ratio   Date   Time   CRC-32    Name

--------  ------  ------- -----   ----   ----   ------    ----
   17484  Defl:N     2269  87%  03-30-09 22:59  03bf67d6  20090330/Logs-20090330.CSV
...

Remova a variável de ambiente e você verá menos comportamentos como em um sistema básico:

michael@challenger:~> unset LESSOPEN
michael@challenger:~> less logs.zip
"logs.zip" may be a binary file.  See it anyway? 

Verifique sua página man less (1) para ver se ela suporta LESSOPEN.

    
por 20.10.2009 / 18:15
1

Eu nunca vi esse trabalho em .tgz arquivos, apenas .gz arquivos de texto, mas talvez sim. Em qualquer caso, em muitas distribuições do Linux, less detectará se um arquivo é compactado e descompactará o fluxo conforme ele é exibido. Eu não posso falar pelo FreeBSD, mas pelo menos no OpenBSD você precisa usar zless se estiver olhando para um arquivo de texto gzipped. Eu imagino que esteja incluído no FreeBSD também, ou pelo menos disponível na árvore de ports.

    
por 20.10.2009 / 17:47

Tags