Como usar o `cat` para ver o topo de um arquivo muito longo?

18

Eu gostaria de saber como

cat my-verylong-file

e mostre-o de cima em vez de do fim. Como o comando man faz.

Sei lá
fonte
5
Para completar, também existe o morecomando ... mas, como moreé menos capaz que less, é bem verdade que "menos é mais". Finalmente, há também pgpara "página". Você também pode usar esses comandos com tubos - por exemplo. ls -l | lesspara quebrar uma lista de arquivos muito longa em várias páginas. E você pode até usar cat my-verylong-file | less.
Baard Kopperud
Também vale ressaltar que "Por padrão, o homem usa / usr / bin / less -is". (de man man).
Digital Trauma

Respostas:

43

Use less, que mostrará o arquivo de cima, permitindo que você o percorra, da seguinte maneira man:

less my-verylong-file
  • Pressione qpara sair.

Se você está apenas interessado em ver as n primeiras linhas de um arquivo, headpode ser uma alternativa:

head -n 25 filename

mostrará as 25 primeiras linhas do arquivo.

O mesmo para as n últimas linhas de um arquivo com tail:

tail -n 25 filename
vidarlo
fonte
2
lesstambém pode ser usado para rolar saídas muito longas de comandos. Aqui é apresentado um exemplo: ls -laR --color=always ~/ | less -R.
precisa
2
E o nome do comando "less" é um trocadilho com o nome do comando "more" (que substitui mais ou menos) que, por sua vez, foi nomeado no prompt "--More" que ele forneceu. Sob MacOS parece que mais é o mesmo binário como menos a metamorfose é completa :)
Thorbjørn Ravn Andersen
5
Então, mais ou menos a mesma coisa?
Ryan The Leach
11
@ pa4080: você pode configurar lesspara que -Rseja ativado por padrão. Veja minha resposta.
Peter Cordes
@RyanTheLeach more e less : the same thing :)
chepner
11

manusa less(1)como pager por padrão. Use-o em vez de cat. Veja também a resposta de @ vidarlo .

Como personalizar lesspara torná-lo ainda melhor:

Eu gosto alias m=less, então é apenas um comando de uma letra, porque eu digito o tempo todo. Colocar um |mno final de qualquer coisa o coloca em um pager.

Você pode colocar opções como -iMRj5Xno pseudônimo (por exemplo alias m='less -iMRX), mas eu faço isso com o meu ~/.lesskeyarquivo. (Veja lesskey(1)).

  • -i: as pesquisas diferenciam maiúsculas de minúsculas (a menos que você use letras maiúsculas)
  • -M: linha de status mais longa, mostrando o número da linha e a porcentagem do arquivo
  • -R: permita alguns códigos de controle, para que você possa canalizar comandos coloridos em menos.
  • -X: não mude para a tela "alternativa" do emulador de terminal; assim, o que você estava vendo ainda estará lá quando qsair less. (ótimo para páginas de manual depois de encontrar a opção desejada e querer vê-la enquanto digita.)
  • -j5: as pesquisas colocam a linha de destino na linha 5 em vez da parte superior da tela. Assim, você pode ver o contexto nos dois lados do resultado da pesquisa. (Às vezes, altero isso de maneira interativa, digitando -j40ou algo dentro less, se for mais útil ver o contexto antes de uma busca).

Também vinculo .a next-file, e ,a prev-file, porque as ligações padrão são dois caracteres separados que são muito mais lentos para digitar: :ne :p.


Este é o meu .lesskey:

$ cat .lesskey
. next-file
, prev-file
#env
LESS = iMRj5X

Execute lesskeypara "compilar" em um arquivo ~/.less.

Provavelmente isso importou mais de 20 anos atrás, mas lesslê esse arquivo binário em vez de analisar um arquivo de configuração de texto toda vez que ele é iniciado.

Peter Cordes
fonte
@ Dan: Adicionada uma linha na parte superior para que esta resposta possa se sustentar por si só como resposta à pergunta. Eu pensei que deixar essa parte implícita seria suficiente, dada a outra resposta, mas se eu não tiver nenhuma objeção a explicitar se estava incomodando você.
Peter Cordes