Navegando hacia adelante en más buscapersonas usando f

Navegando hacia adelante en más buscapersonas usando f

Se proporciona en la página de manual moreque fse usa para saltar hacia adelante k pantalla llena de texto (predeterminado en 1). Guardé un archivo muy largo usando caty solía moremostrarlo en la pantalla página por página, pero cuando presioné fen la primera página En sí, no navega hacia adelante, pero se muestra ... skipping 29 linesy luego el archivo se cierra y vuelve a aparecer el mensaje. Cuando intento navegar, spacebarfunciona correctamente como se esperaba. Como la longitud del archivo es lo suficientemente larga, debe avanzar omitiendo 1 página cada vez. ¿Por qué muestra un comportamiento tan diferente?

ingrese la descripción de la imagen aquí

Respuesta1

Pruebe este experimento:

  • Abra una terminal con 25 filas.
  • Correr seq 1 1 100 > test_text.
  • Correr more test_text.
  • Mire la penúltima línea en su pantalla. Diría 24.
  • Presione fparasaltaruna página.
  • Mire la primera línea en la pantalla. Diría 49.

fsalta una página de texto. Entonces vio la primera "página" del archivo, presionó fy vio la tercera página.

En este punto, si presiona fnuevamente, verá ... skipping 24 lineslas últimas 4 líneas del archivo. moreSaldremos porque no hay suficientes líneas para mostrar una quinta página.

Vuelve a intentarlo usando spaceen su lugar. spaceno se salta páginas. Verás todas las páginas.

Editar

Esta respuesta se refiere a more version 5.19 (Berkeley 6/29/88), which is currently in use in the Linux community(verhombre mas). Como informa @Kusalananda, el resultado del "experimento" puede variar en diferentes versiones/unidades.

diferencia entre a liney arow of text on a terminal

A menudo estas dos definiciones son intercambiables. En este caso es importante distinguirlos.

  • Una línea es una secuencia de caracteres en un archivo de texto que termina con una nueva línea (el \ncarácter). wc -lEl comando cuenta el número de líneas en un archivo. La longitud de una línea puede ser cualquier número entre cero e infinito.
  • Una fila de texto (en un terminal) es una secuencia de caracteres que se muestran en un terminal. Tiene el largo fijo del ancho del terminal.

Mi primer "experimento" fue demasiado simple, todas las líneas eran (con toda seguridad) más cortas que las filas.

En su archivo, probablemente, las líneas sean mucho más largas que las filas. Para mostrarlos, moreorganizará cada línea en varias filas.

Probemos un nuevo experimento:

  • Crea un archivo examplecon este contenido:

    006 XX\n010 XXYYYY\n015 XXYYYYZZZZZ\n
    

    Este es un archivo de 3 líneas. La longitud de cada línea es, en este orden: 6, 10 y 15 caracteres. No olvides contar el espacio después del número.

  • Correr wc -l example. 3 es el resultado.

  • En una terminal de 8 columnas, deberías ver algo como

    006 XX  
    010 XXYY
    YY      
    015 XXYY
    YYZZZZZ 
    

    La primera fila tiene una longitud de 8 caracteres: 006+ un espacio + XX+ 2 espacios.

    La segunda fila tiene una longitud de 8 caracteres: 010+ un espacio + XXYY.

    La tercera fila tiene una longitud de 8 caracteres: YY+ 8 espacios.

    Etcétera etcétera.

Tus 3 líneas de texto ahora son 5 filas de texto.

La página del manual de moredice:

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

Esto significa que morese saltarán tantas líneas de texto para llenar todas las filas de la terminal.

Respuesta2

pero se muestra ...skipping 29 linesy luego el archivo se cierra y el mensaje regresa

Eso pasa cuando presionas fy llegas al final del documento.

Por ejemplo: Tienes un archivo de 40 líneas, lo haces more myfileof60lines.txt, muestra las 29 primeras líneas, luego presionas f, por lo que se saltará las 29 líneas siguientes, pero antes de eso llega al final del documento. Entonces terminas viendo ...skipping 29 linesy el comportamiento normal de morecuando llega al final del documento, que es volver al mensaje.

información relacionada