navegando para frente em mais pager usando f

navegando para frente em mais pager usando f

É fornecido na página de manual moreque fé usada para avançar k tela cheia de texto (o padrão é 1). Salvei um arquivo muito longo usando cate usei morepara mostrá-lo na tela página por página, mas quando pressionei fna primeira página em si, ele não está navegando para frente, mas mostra ... skipping 29 linese então o arquivo fecha e o prompt retorna. Quando tento navegar com spacebarele 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?

insira a descrição da imagem aqui

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 linesas últimas 4 linhas do arquivo. moreSairei 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 linee 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 \ncaractere). wc -lcomando 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, moreorganizará cada linha em várias linhas.

Vamos tentar uma nova experiência:

  • Crie um arquivo examplecom 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 morediz:

 f         Skip forward k screenfuls of text.  Defaults to 1.

Isso significa que moreirá pular tantas linhas de texto para preencher todas as linhas do terminal.

Responder2

mas aparece ...skipping 29 linese então o arquivo fecha e o prompt retorna

Isso acontece quando você pressiona fe 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 lineso comportamento normal de morequando chega ao final do documento, que é um retorno ao prompt.

informação relacionada