Eu costumava usar cat
para visualizar arquivos. Aprendi então que isso less
geralmente é melhor e é obrigatório se o arquivo tiver mais de algumas dezenas de linhas.
Minha pergunta: existe alguma razão para usar em cat
vez de less
? Existe alguma situação em que cat
há uma solução melhor?
less
ecat
resolver problemas diferentes e são cada um melhor que o outro em seu próprio domínio do problemacat
para canalizar sua saídaless
posteriormente.cat
arquivos muito curtos no console, os arquivos/proc
e/sys
são ótimos candidatos. Dessa forma, posso ver o conteúdo de vários arquivos simultaneamente.Respostas:
Pessoalmente, prefiro
view
conteúdo estático outail -f
dinâmico.Isso não responde à sua pergunta, no entanto. Há um ditado "por que usar mais se você tem menos" ;-)
Mas há casos em que prefiro gato a menos: geralmente trabalho com o X11-windows. Essas janelas têm um buffer de rolagem que pode ser definido para algumas centenas de linhas.
Fazer um
cat
para - digamos 200 linhas e, em seguida, usar o mouse com a barra de rolagem é mais confortável para mim do que usarless
nesses casos.fonte
view
que você quer dizer o costumevim -R
, ou você tem alguma coisa com esse nome?less +F
faz o quetail -f
faz.view
não é um apelido; é um link (paravi
ouvim
).vi
examinaargv[0]
quando é iniciado (para ver em que nome foi chamado) e, se éview
ourview
, define o modo somente leitura (como se você tivesse digitadovim -R
).Embora ambos os comandos permitam visualizar o conteúdo de um arquivo, seus propósitos originais são bem diferentes.
menos estende os recursos de mais . O último foi criado para exibir o conteúdo de um arquivo, uma tela por vez. menos adiciona 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 split e cat. O primeiro comando dividirá um arquivo grande em pequenas porções. O segundo concatenará as pequenas porções em um único arquivo.
De volta à 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.
fonte
less
sempre permite pesquisar dentro do arquivo, o quecat
não acontece.Eu costumo usar
cat
quando preciso digitar um comando com base 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.fonte
Quando você está lidando com mais de um arquivo e deseja concatená-los.
Na página do manual:
fonte
Há pessoas que argumentam violentamente que o único propósito de
cat
se con gato arquivos Enate. Para qualquer outro uso, existemore
(ouless
).Mas isso não leva em conta um fato bastante importante:
cat
há um caractere a menos para digitar. Eu uso esses comandos com tanta frequência que um caractere a menos é um acéfalo.Outro motivo é quando você deseja criar um arquivo. Costumo copiar e colar texto da Web em um arquivo como este (prompt de comando mostrado):
Ou seja, abro um arquivo
filename
para acesso de gravação, colo o conteúdo e fecho o fluxo pressionando Ctrl- D. Nemless
nemmore
pode fazer isso, e é mais rápido do que a abertura de um editor.fonte
$<filename
(onde$
está o prompt) chame o $ PAGER com o stdin conectadofilename
. Isso é ainda menos caracteres para digitar do quecat
.pbpaste > filename
e acredito que o X tenha algo semelhante. Eu ainda usocat
para criação rápida de arquivos, mas não para colar.pbcopy
/pbpaste
para outros fins.q
a saídaless
: DÀs vezes, você não deseja a paginação que
less
deseja e apenas deseja o arquivo completo para usá-locat
.fonte
Eu uso
cat
paragrep
(vários) arquivos.cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"
Eu sei que
grep
suporta nomes de arquivos, mas se você está esperando o mesmo arquivo por termos de pesquisa diferentes, editar um comando em que o termo de pesquisa é a última coisa na linha é mais fácil do que ter que pressionar a tecla Ctrl + seta na linha.fonte
cat
pode ser usado para concaturar vários arquivos binários em um grande:fonte
Eu uso
less -FX
, o que faz com que seless
comporte comocat
quando um arquivo pode ser exibido em uma tela. Na página deless(1)
manual:fonte
Eu acho que, devido à economia de variantes do Unix agora, muitas pessoas não precisam administrar seus sistemas (com vingança). Quando tudo der certo, você poderá reiniciar e entrar no sistema no que é chamado de ambiente restrito.
Você obtém uma linha de comando e acessa um pequeno conjunto do que é considerado comandos úteis que são pequenos e geralmente vinculados estaticamente. Você pode obter o vi como editor ou mesmo o menor, mas não o emacs ou o vim. Você teria gato, mas não menos. A idéia é fornecer ferramentas suficientes para reparar seu sistema sem consumir muitos recursos, pois esses recursos podem estar incorretamente configurados ou esgotados. menos comando sob essas circunstâncias é supérfluo.
fonte
E
less
não está pré-instalado em todas as distribuições GNU / Linux. (por exemplo, Gentoo)cat
está em toda parte, provavelmente.fonte
As
cat
permanece na tela. Tudoless
desaparece.Esclarecido por / para Volker Siegel:
A saída de
cat
permanece na tela. Tudo o que é mostradoless
desaparece após o fechamento.fonte
Pode haver um problema com a escalação de privilégios, pois em 'less' 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ó pode ser lido pelo superusuário, mas não permite 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 deseja permitir 'sudo / usr / bin / less / etc / importantfile', porque eles podem usar 'v' para editar o arquivo ou '!' para iniciar um shell com privilégios completos de superusuário.
Obviamente, os usuários poderiam usar 'sudo / bin / cat / etc / importantfile | less 'e ainda usa' less ', sem os riscos de segurança.
fonte
Os dois são diferentes.
less
é um pager não padrão (more
é o padrão), usado para exibir texto, enquantocat
é 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 em algumas circunstâncias, mas, novamente, o mesmo acontece com outros utilitários.
fonte
Por conveniência. gato tem 3 caracteres enquanto mais / menos tem 4 caracteres. E digitar gato requer apenas a mão esquerda.
fonte
Em termos de como mostrar os caracteres na tela,
less
pode fazer o quecat
pode; E muito mais.Mas há uma boa razão para usar o gato em alguns casos:
less
é muito complexo para resolver problemas muito simples. Eu tenho tantas opções que é difícil encontrar ascat
relacionadas na página de manual.Deseja mostrar as guias em um
Makefile
?Em
man cat
, a primeira opção é-A
.A descrição não é útil:
-vET
.Mas o longo nome de opção soa apenas para a direita:
--show-all
.E
cat -A Makefile
faz o que eu preciso.Agora, vá encontrar isso por
less
.fonte
Ambos 'less' e 'more' funcionarão exatamente como 'cat' se a saída não for um terminal (tty); quanto a pipes e arquivos, ambos reverterão para nenhuma paginação.
Eu acho que é seguro dizer que 'cat' está sempre presente em qualquer sistema do tipo Unix que você encontrará. A presença de 'less' e / ou 'more' em qualquer sistema é menos previsível.
Portanto, nos scripts, se você precisar apenas de uma operação de não paginação, 'cat' estará presente sempre que seu script for usado em um sistema do tipo Unix.
fonte
more
estará disponível, visto que é exigido pela Especificação Unix Única.less
ou ummore
estará presente, mas acho que não se pode confiar em um em particular, nem que seja uma implementação 'verdadeira' ... muitas vezes um é alias ao outro, às vezes eles ' re uma versão leve e mínima.A tubulação de gato através do grep é útil:
fonte
grep
leva um nome de arquivo como argumento, ou você pode usar o redirecionamento. O tubo é caro.less
" está no título pergunta ...grep [search term] [filename]
Portanto, é mais difícil editar o termo de pesquisa se eu estiver usando o histórico do terminal. Ao canalizar para grep, o termo de pesquisa é a última coisa na linha e mais fácil de editar.cat
:< [filename] grep [search term]
e< filename tail -n 1000 | grep pattern
. O redirecionamento pode ir praticamente para qualquer lugar da linha de comando.