Há algum motivo para usar 'cat' quando você tem 'menos'?

54

Eu usei cat para ver arquivos. Então eu aprendi que less é geralmente melhor, e é uma necessidade se o arquivo for maior que algumas dúzias de linhas.

Minha pergunta: há algum motivo para usar cat em vez de less ? Existe alguma situação em que cat seja uma solução melhor?

    
por Ram Rachum 27.09.2011 / 22:33

18 respostas

18

Eu pessoalmente prefiro view para conteúdo estático ou tail -f para conteúdo dinâmico.

Isso não responde à sua pergunta, no entanto. Há um ditado "por que usar mais se você tiver menos"; -)

Mas há casos em que prefiro gato a menos: Eu costumo trabalhar com o X11-windows. Essas janelas têm um buffer de rolagem que pode ser configurado para algumas centenas de linhas.

Fazer cat para - digamos 200 linhas e usar o mouse com a barra de rolagem é mais confortável para mim do que usar less nesses casos.

    
por 27.09.2011 / 22:42
86

Embora ambos os comandos permitam que você visualize o conteúdo de um arquivo, seus propósitos originais são bem diferentes.

menos amplia as capacidades de mais . Este último foi criado para visualizar o conteúdo de um arquivo, uma tela por vez. menos inclui recursos como movimentos para trás e melhor gerenciamento de memória (não é necessário ler o arquivo inteiro antes de poder ver as primeiras linhas).

cat concatena arquivos e imprime o resultado na saída padrão. Se você fornecer apenas um arquivo, verá o conteúdo desse arquivo. Torna-se "poderoso" quando você fornece vários arquivos. Um bom exemplo é a combinação de divisão e cat. O primeiro comando irá dividir um arquivo grande em pequenas porções. O segundo então concatenará as pequenas porções em um único arquivo.

Voltando à sua pergunta, o gato seria preferido em um script autônomo, exigindo que os arquivos fossem lidos inteiramente (ou concatenados) sem interação. Em termos de visualização de arquivos, acho que é mais uma questão de gosto.

    
por 27.09.2011 / 23:06
22

Eu costumo usar cat quando eu preciso digitar um comando baseado em algo no arquivo. cat é mais conveniente, pois você pode ver o arquivo (se for pequeno) enquanto tiver acesso ao prompt do shell. Também permite o revestimento de tubos.

    
por 27.09.2011 / 22:41
17
Is there any situation where cat is a better solution?

Quando você está lidando com mais de um arquivo e deseja concatená-los.

Da página do manual:

cat f - g
        Output f's contents, then standard input, then g's contents.
    
por 27.09.2011 / 22:58
15

Há pessoas que argumentam com violência que o único propósito de cat é usar arquivos cat enate. Para qualquer outro uso, há more (ou less ).

Mas isso não leva em conta um fato muito importante: cat é um caractere a menos para ser digitado. Eu uso esses comandos com tanta frequência que um caractere a menos é óbvio.

Outro motivo é quando você deseja criar um arquivo. Eu frequentemente copio e colo texto da Web em um arquivo como este (prompt de comando exibido):

$ cat > filename
<Cmd-V>
<Ctrl-D>
$

Ou seja, abro um arquivo filename para acesso de gravação, cole o conteúdo e fecho o fluxo pressionando Ctrl - D . Nem less nem more podem fazer isso e é mais rápido do que abrir um editor.

    
por 28.09.2011 / 11:04
9

Às vezes, você não deseja a paginação que less faz e deseja apenas o arquivo completo para usar cat .

    
por 27.09.2011 / 22:40
4

Eu uso arquivos cat to grep (multiple).

cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"

Eu sei que grep suporta nomes de arquivos, mas se você estiver usando o mesmo arquivo para termos de pesquisa diferentes, editar um comando onde o termo de busca é a última coisa na linha é mais fácil do que ter que usar Ctrl + Seta a linha.

    
por 28.09.2011 / 05:45
4

cat pode ser usado para concatenar vários arquivos binários em um grande:

cat data.001 data.002 data.003 > bigdata.dat
    
por 28.09.2011 / 11:27
2

Eu acho que, por causa do poularity de variantes do Unix agora, muitas pessoas não precisam administrar seus sistemas (com uma vingança). Quando as coisas vão arrebentar, você poderá reinicializar e entrar no seu sistema no que é chamado de ambiente restrito.

Você obtém uma linha de comando e acessa um pequeno conjunto de comandos úteis considerados pequenos e geralmente vinculados estaticamente. Você pode ter o vi como editor ou até mesmo o editor menor, mas não o emacs ou vim. Você teria gato, mas não menos. A ideia é fornecer ferramentas suficientes para reparar o sistema sem precisar gastar muito recursos, pois esses recursos podem estar incorretamente configurados ou esgotados. o menor comando sobre essas circunstâncias é supérfluo.

    
por 29.09.2011 / 08:23
2

E less não está pré-instalado em todas as distribuições GNU / Linux. (ex. Gentoo) cat está em todo lugar, provavelmente.

    
por 04.04.2012 / 20:05
2

Eu uso less -FX , o que faz com que less se comporte como cat quando um arquivo pode ser exibido em uma tela. Na% man_de% manpage:

-F or --quit-if-one-screen
       Causes less to automatically exit if the entire file can be dis-
       played on the first screen.

-X or --no-init
       Disables sending the termcap initialization and deinitialization
       strings  to  the  terminal.   This is sometimes desirable if the
       deinitialization string does something unnecessary, like  clear-
       ing the screen.
    
por 11.08.2013 / 05:54
2

O cat fica na tela. Tudo less desaparece.

Esclarecido por / para Volker Siegel:

A saída de cat permanece na tela. Tudo mostrado por less desaparece após o fechamento.

    
por 15.09.2014 / 14:48
1

Pode haver um problema com a escalação de privilégios, pois dentro de 'menos' você pode pressionar 'v' para editar um arquivo ou '!' para enviar um comando shell.

Você pode permitir que alguns usuários visualizem um arquivo que só possa ser lido pelo superusuário, mas não permita que esses usuários editem o arquivo ou usem privilégios de superusuário em geral. Você pode fazer isso editando '/ etc / sudoers' para permitir que eles usem 'sudo / bin / cat / etc / importantfile'. Você não gostaria de permitir 'sudo / usr / bin / less / etc / importantfile', porque eles poderiam usar 'v' para editar o arquivo, ou usar '!' para iniciar um shell com privilégios completos de superusuário.

Claro, os usuários podem usar 'sudo / bin / cat / etc / importantfile | menos 'e ainda usar' menos ', sem os riscos de segurança.

    
por 29.09.2011 / 19:50
0

Piping cat through grep é útil:

cat <filename> | grep -i "string of interest"
    
por 27.09.2011 / 22:50
0

Por conveniência. gato tem 3 caracteres, enquanto mais / menos tem 4 caracteres. E digitar gato só exige sua mão esquerda.

    
por 26.01.2012 / 09:20
0

Em termos de como mostrar os caracteres na tela, less pode fazer o que o cat pode fazer; E muito mais.

Mas há uma razão muito boa para usar o cat em alguns casos: o less é apenas muito complexo para lançá-lo em problemas muito simples. Eu tenho tantas opções que é difícil encontrar as% relacionadas com cat na página man.


Deseja mostrar as guias em Makefile ?

Em man cat , a primeira opção é -A .
A descrição não é útil: -vET .
Mas o longo nome da opção soa bem: --show-all .

E cat -A Makefile faz o que eu preciso.


Agora, ache isso para less .

    
por 10.11.2014 / 07:19
0

Os dois são diferentes. less é um pager não padrão ( more é o padrão), usado para exibir texto, enquanto cat é um utilitário padrão, usado para concatenar qualquer tipo e número de fluxos de dados em um.

Eles podem parecer fazer a mesma coisa sob algumas circunstâncias, mas, novamente, o mesmo acontece com outras utilidades.

    
por 31.12.2016 / 09:40
0

Tanto "menos" quanto "mais" funcionarão exatamente como "cat" se a saída não for um terminal (tty), como para pipes e arquivos, ambos reverterão para nenhuma paginação.

Acho que é seguro dizer que 'cat' está sempre presente em qualquer sistema do tipo Unix que você possa encontrar. A presença de 'menos' e / ou 'mais' em qualquer sistema é menos previsível.

Em scripts, portanto, se você precisar apenas de uma operação sem paginação, 'cat' certamente estará presente sempre que seu script for usado em um sistema do tipo Unix.

    
por 31.12.2016 / 12:50

Tags