Comando more in Linux: leggere file e output una schermata alla volta
more è un visualizzatore interattivo, o pager, che mostra un testo lungo una schermata alla volta nel terminale. Premi Spazio per proseguire, Invio per avanzare di una riga e q per uscire; per una navigazione più flessibile in entrambe le direzioni puoi usare less.
Questa guida descrive soprattutto more di util-linux, comune su Linux: altre implementazioni possono accettare opzioni e tasti diversi. Per gli esempi crea una cartella nuova con mkdir more-demo && cd more-demo e prosegui soltanto se entrambi i comandi riescono. Usa nomi nuovi per i file dimostrativi; le preparazioni richiedono una shell compatibile e gli strumenti GNU seq e printf.
More legge un file o lo standard input ricevuto tramite una pipe. In un terminale interattivo si ferma alle schermate intermedie, senza modificare il file sorgente durante la normale lettura. Un testo più corto dello schermo può terminare subito; il ritorno alla shell alla fine dell’input dipende anche dalla versione e dalle opzioni. I tasti del pager si premono dopo l’avvio, non nella shell.
Sintassi di base
more [OPTION]... [FILE]...
OPTION e FILE sono segnaposto. Controlla more --version, more --help e man more sul sistema in uso. I nomi con spazi vanno tra virgolette; un percorso come ./-note.txt evita che il trattino iniziale venga interpretato come un’opzione. I comandi e le opzioni sotto indicati non devono essere trasferiti automaticamente al programma omonimo di Windows o a versioni BSD.
Uso di base di more
Leggere un file una schermata alla volta
Crea un file abbastanza lungo con seq 1 120 > README.txt. Il comando seguente mostra le righe numerate e, durante la lettura, può presentare un indicatore di avanzamento in fondo. Se ingrandisci il terminale, cambia il numero di righe che entrano nella schermata. Premi q per interrompere la consultazione.
more README.txt
Avanzare di una schermata o di una riga
Crea changelog.txt con seq 1 120 > changelog.txt. Durante l’esecuzione, Spazio mostra la schermata successiva, Invio avanza di una riga e q esce. In more di util-linux, h o ? mostrano l’aiuto, /90 seguito da Invio cerca in avanti e n ripete la ricerca. Su un normale file, b o Ctrl+B tornano indietro di una schermata; questo comando non funziona su una pipe.
more changelog.txt
Sfogliare l’output di un comando
La pipe | passa l’output del primo comando a more. Nell’esempio dmesg legge i messaggi del kernel Linux: può restituire un errore di permessi se l’accesso è limitato, anche quando more funziona correttamente. Non occorre cambiare le impostazioni di sicurezza per provare la paginazione: usa invece seq 1 120 | more, che produce dati dimostrativi. Non aggiungere opzioni di cancellazione del buffer a dmesg.
dmesg | more
Capire l’indicatore di avanzamento
Prepara sample.txt con seq 1 120 > sample.txt. Mentre scorri il file con il comando seguente, una pausa intermedia può mostrare --More-- e una percentuale. La scritta non rappresenta una riga del file e non è un comando da copiare.
more sample.txt
Esempio indicativo della riga di stato, non risultato garantito della prova:
--More--(50%)
Il 50% indica soltanto un avanzamento approssimativo: non significa necessariamente metà delle righe. La percentuale può mancare su una pipe, di cui non è nota la lunghezza totale. Per continuare premi Spazio o Invio; per uscire premi q. More di util-linux normalmente termina alla fine dell’input, ma variabili come POSIXLY_CORRECT possono modificarne il comportamento. Non aspettarti la stessa schermata finale di less.
Opzioni principali di util-linux more
| Opzione | Scopo |
|---|---|
-d |
Mostra suggerimenti sui tasti e messaggi più chiari in caso di tasto non valido. |
-s |
Compatta più righe vuote consecutive in una sola nella visualizzazione. Non modifica il file. |
-f |
Conta le righe logiche, delimitate da nuova riga, anziché le righe occupate sullo schermo. Una riga molto lunga può comunque occupare più righe visive nel terminale: non equivale a less -S. |
-NUM |
Imposta NUM righe per schermata, per esempio -10. Util-linux accetta anche -n 10 o --lines 10. |
+NUM |
Inizia la visualizzazione dalla riga NUM, per esempio +200. |
+/PATTERN |
Cerca PATTERN prima di iniziare la visualizzazione. Racchiudi l’intero argomento tra apici se contiene metacaratteri della shell. |
Esempi pratici
Iniziare da una riga specifica
Crea server.log con seq 1 300 > server.log. Il comando seguente inizia dalla riga 200, quindi il primo valore atteso è 200. Scegli un numero compreso nel file; un file più corto non può fornire la riga richiesta. Per contare con facilità le schermate puoi provare separatamente more -10 server.log.
more +200 server.log
Iniziare vicino alla prima corrispondenza
Per una prova separata crea search.log con printf 'inizio\nERROR prova\ncontesto\nfine\n' > search.log e usa more '+/ERROR' search.log. Nel comando seguente sostituisci server.log con il tuo log reale, oppure aggiungi una riga ERROR al file dimostrativo con printf 'ERROR aggiunto\n' >> server.log. Il pager cerca prima di mostrare il contenuto e può includere righe di contesto precedenti: non aspettarti che la corrispondenza sia sempre la prima riga. Durante la consultazione, /ERROR seguito da Invio cerca in avanti e n ripete. Il modello è un’espressione regolare, non una ricerca letterale in ogni caso.
more +/'ERROR' server.log
Ridurre le righe vuote nella visualizzazione
Crea report.txt con printf 'inizio\n\n\ncentro\n\n\nfine\n' > report.txt. Con -s i gruppi di tre nuove righe lasciano una sola riga vuota fra i testi. Confronta more report.txt e il comando seguente; su questo file breve il programma può arrivare direttamente alla fine. Il contenuto di report.txt rimane invariato.
more -s report.txt
Confronto tra more e comandi correlati
| Comando | Ruolo principale | Quando usarlo |
|---|---|---|
more |
Paginazione semplice schermo per schermo | Lettura principalmente in avanti |
less |
Navigazione in entrambe le direzioni e ricerca più flessibile | Analisi di file lunghi |
cat |
Scrittura del contenuto sullo standard output, senza paginazione interattiva | File brevi |
head |
Solo l'inizio | Controllare rapidamente intestazioni o formato iniziale |
Avvertenze importanti
Le implementazioni differiscono
Le versioni util-linux, BSD e gli altri programmi chiamati more non sono intercambiabili. La variabile MORE può impostare opzioni predefinite; TERM e le dimensioni del terminale influenzano la presentazione. Consulta la guida locale se un’opzione non viene riconosciuta. Per leggere soltanto il file non serve avviare l’editor con v né una shell con !: sono funzioni distinte dalla navigazione.
L'input a pipe può limitare il movimento all'indietro
Una pipe trasmette un flusso in avanti e non offre necessariamente la possibilità di rileggere i byte già consumati. In more di util-linux, b e Ctrl+B funzionano con i file ma non con le pipe. Per analizzare a lungo un output puoi scegliere less oppure salvarlo in un nuovo file e aprirlo dopo; verifica spazio disponibile e sensibilità dei dati prima di conservarlo. Non attribuire a ogni implementazione le stesse possibilità di ritorno indietro.
Evita i pager interattivi negli script non presidiati
Usa selettori non interattivi come head, sed o awk quando l’output deve essere elaborato automaticamente. Un pager può attendere input e bloccare uno script; se il suo output viene reindirizzato, può invece non paginare affatto. In una pipeline lo stato finale normalmente è quello dell’ultimo comando: non presumere che la chiusura del pager dimostri il successo del produttore. Controlla gli errori del comando che genera i dati.
FAQ
Come esco da more?
Premi q.
Come avanzo di una riga?
Premi Invio durante una pausa interattiva. Spazio avanza normalmente di una schermata. Una volta raggiunta la fine, il programma potrebbe essere già tornato alla shell.
Dovrei usare more o less?
Per una semplice lettura soprattutto in avanti, more è sufficiente. Per ricerche e spostamenti frequenti in entrambe le direzioni, less offre più possibilità; more di util-linux supporta comunque ricerca in avanti e ritorno indietro sui file normali.
More può iniziare da una riga specifica?
Sì, nelle implementazioni che lo supportano: more +200 server.log inizia dalla riga 200. La riga deve esistere e la sintassi va verificata con la guida della versione installata.




