
Se proporciona en la página de manual more
que f
se usa para saltar hacia adelante k pantalla llena de texto (predeterminado en 1). Guardé un archivo muy largo usando cat
y solía more
mostrarlo en la pantalla página por página, pero cuando presioné f
en la primera página En sí, no navega hacia adelante, pero se muestra ... skipping 29 lines
y luego el archivo se cierra y vuelve a aparecer el mensaje. Cuando intento navegar, spacebar
funciona 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?
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 lines
las últimas 4 líneas del archivo. more
Saldremos 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 line
y 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
\n
carácter).wc -l
El 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, more
organizará cada línea en varias filas.
Probemos un nuevo experimento:
Crea un archivo
example
con 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 more
dice:
f Skip forward k screenfuls of text. Defaults to 1.
Esto significa que more
se saltarán tantas líneas de texto para llenar todas las filas de la terminal.
Respuesta2
pero se muestra
...skipping 29 lines
y luego el archivo se cierra y el mensaje regresa
Eso pasa cuando presionas f
y 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 lines
y el comportamiento normal de more
cuando llega al final del documento, que es volver al mensaje.