
É fornecido na página de manual more
que f
é usada para avançar k tela cheia de texto (o padrão é 1). Salvei um arquivo muito longo usando cat
e usei more
para mostrá-lo na tela página por página, mas quando pressionei f
na primeira página em si, ele não está navegando para frente, mas mostra ... skipping 29 lines
e então o arquivo fecha e o prompt retorna. Quando tento navegar com spacebar
ele está funcionando corretamente conforme o esperado. Como o comprimento do arquivo é suficientemente longo, ele deve avançar pulando uma página de cada vez. Por que está mostrando um comportamento tão diferente?
Responder1
Experimente esta experiência:
- Abra um terminal com 25 linhas.
- Correr
seq 1 1 100 > test_text
. - Correr
more test_text
. - Observe a penúltima linha na tela. Diria
24
. - Pressione fparapularuma página.
- Observe a primeira linha na tela. Diria
49
.
fpula uma página de texto. Então você viu a primeira “página” do arquivo, pressionou fe viu a terceira página.
Neste ponto, se você pressionar fnovamente, você verá ... skipping 24 lines
as últimas 4 linhas do arquivo. more
Sairei porque não há linhas suficientes para mostrar uma quinta página.
Tente novamente usando space. spacenão pula páginas. Você verá todas as páginas.
Editar
Esta resposta refere-se a more version 5.19 (Berkeley 6/29/88), which is currently in use in the Linux community
(verhomem mais). Como relata @Kusalananda, o resultado do "experimento" pode variar em diferentes versões/unidades.
Diferença entre um line
e umrow of text on a terminal
Freqüentemente, essas duas definições são intercambiáveis. Neste caso, é importante distingui-los.
- Uma linha é uma sequência de caracteres em um arquivo de texto que termina com uma nova linha (o
\n
caractere).wc -l
comando conta o número de linhas em um arquivo. O comprimento de uma linha pode ser qualquer número entre zero e infinito. - Uma linha de texto (em um terminal) é uma sequência de caracteres exibidos em um terminal. Possui comprimento fixo da largura do terminal.
Meu primeiro "experimento" foi muito simples, todas as linhas eram (com certeza) mais curtas que as linhas.
No seu arquivo, provavelmente, as linhas são muito mais longas que as linhas. Para exibi-los, more
organizará cada linha em várias linhas.
Vamos tentar uma nova experiência:
Crie um arquivo
example
com este conteúdo:006 XX\n010 XXYYYY\n015 XXYYYYZZZZZ\n
Este é um arquivo de 3 linhas. O comprimento de cada linha é, na ordem: 6, 10 e 15 caracteres. Não se esqueça de contar o espaço após o número.
Correr
wc -l example
. 3 é o resultado.Em um terminal de 8 colunas, você deverá ver algo como
006 XX 010 XXYY YY 015 XXYY YYZZZZZ
A primeira linha tem 8 caracteres:
006
+ um espaço +XX
+ 2 espaços.A segunda linha tem 8 caracteres:
010
+ um espaço +XXYY
.A 3ª linha tem 8 caracteres:
YY
+ 8 espaços.Etc etc.
Suas 3 linhas de texto agora são 5 linhas de texto.
A página de manual more
diz:
f Skip forward k screenfuls of text. Defaults to 1.
Isso significa que more
irá pular tantas linhas de texto para preencher todas as linhas do terminal.
Responder2
mas aparece
...skipping 29 lines
e então o arquivo fecha e o prompt retorna
Isso acontece quando você pressiona f
e chega ao final do documento.
Por exemplo: Você tem um arquivo de 40 linhas, você faz more myfileof60lines.txt
, ele exibe as 29 primeiras linhas, depois você pressiona f
, então ele vai pular as 29 linhas seguintes, mas antes disso chega ao final do documento. Então você acaba vendo ...skipping 29 lines
o comportamento normal de more
quando chega ao final do documento, que é um retorno ao prompt.