Comando Linux less: leggere, cercare e seguire file di testo

less è un visualizzatore interattivo, o pager, che permette di leggere file di testo e output lunghi una schermata alla volta. Puoi spostarti avanti e indietro, cercare parole e uscire con q, senza riversare tutto il contenuto nel terminale.

Gli esempi richiedono less in un terminale interattivo. Per creare i file dimostrativi prepara una cartella nuova con mkdir less-demo && cd less-demo e prosegui soltanto se entrambi i comandi riescono; usa nomi nuovi per non sovrascrivere documenti da conservare. Le preparazioni con printf e seq usano una shell compatibile e gli strumenti GNU normalmente disponibili su Linux.

Cos'è il comando less?

Less legge un file oppure lo standard input, cioè il flusso ricevuto da un altro comando. La normale navigazione non modifica il file sorgente. I tasti si premono nel pager, dopo averlo avviato: non sono comandi da digitare nella shell. Impostazioni, scorciatoie e funzioni disponibili possono cambiare secondo la versione e la configurazione locale.

Sintassi di base

less [OPTION]... [FILE]...

OPTION e FILE sono segnaposto. Controlla less --version, less --help e man less nel sistema in uso. Racchiudi tra virgolette i percorsi con spazi; per un nome che inizia con un trattino usa, per esempio, less -- ./-events.log. Senza file less legge lo standard input, anche tramite una pipe.

Uso base di less

Aprire e navigare un file

Prepara system.log con printf 'avvio\ncontrollo\nfine\n' > system.log. Dopo il comando seguente vedrai queste tre righe; con un file più lungo, Spazio avanza di una schermata e b torna indietro. Le frecce su e giù si spostano di una riga; g va all’inizio, G alla fine e 50g alla riga 50, se esiste. Premi q per tornare alla shell.

less system.log

Cercare nel testo

Digita /failed e premi Invio per cercare in avanti; ?failed seguito da Invio cerca all’indietro. Il testo cercato è normalmente un’espressione regolare, secondo il supporto della versione installata. n ripete la ricerca nella stessa direzione, N in quella opposta: dopo una ricerca con ?, n continua verso l’inizio. Per impostazione predefinita maiuscole e minuscole sono distinte; vedi -i e -I nella tabella. Il percorso seguente è tipico solo di alcuni sistemi: se /var/log/messages non esiste o non è leggibile, usa un file accessibile come system.log. Non tutti i Linux conservano i log in quel percorso.

less /var/log/messages

Sfogliare l’output di un comando

La pipe | passa l’output di un comando a less. Su sistemi con systemd, journalctl -b seleziona le voci dell’avvio corrente accessibili all’utente. Journalctl usa già un pager per impostazione predefinita quando scrive sul terminale: la pipe seguente serve a scegliere esplicitamente less e le sue opzioni. La disponibilità del journal e i permessi dipendono dal sistema; su altri ambienti prova seq 1 120 | less. I colori possono richiedere impostazioni sia del produttore sia del pager.

journalctl -b | less

Una prova completa di navigazione

Nella cartella dimostrativa crea 120 righe numerate con seq 1 120 > sample.txt. Apri quindi il file con il comando seguente: il numero di righe visibili dipende dall’altezza del terminale, non da un numero fisso di righe per pagina.

less sample.txt

Premi Spazio e poi b per andare avanti e tornare indietro. Digita 50g: la riga 50 viene portata nella posizione di destinazione, normalmente in alto; G mostra il fondo del file, dove può apparire (END). Torna all’inizio con g, cerca /90 seguito da Invio e infine esci con q. Sono comandi interattivi: non concatenarli come una riga della shell. Il testo della riga di stato può variare.

Opzioni principali

Opzione Scopo
-N Mostra i numeri di riga.
-S Nasconde a destra la parte di una riga che supera lo schermo, anziché mandarla a capo. Non tronca il file; puoi spostarti orizzontalmente.
-i Non distingue maiuscole e minuscole, salvo quando il modello di ricerca contiene una lettera maiuscola.
-I Non distingue maiuscole e minuscole, anche se il modello contiene lettere maiuscole.
-R Visualizza sequenze ANSI SGR (Select Graphic Rendition) per i colori e, nelle versioni recenti, collegamenti OSC 8 (Operating System Command); non inoltra indistintamente tutti i controlli del terminale.
+F Esegue il comando interattivo F all’avvio: raggiunge il fondo e attende nuove righe.

Esempi pratici

Leggere righe numerate senza ritorno a capo

Crea un esempio con printf 'utente=anna azione=accesso dettaglio=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\n' > access.log. Con -N compare il numero della riga; -S ne lascia fuori schermo la parte destra. Usa la freccia destra per leggerla e la sinistra per tornare indietro. Se il terminale è abbastanza largo da contenere tutta la riga, riduci la finestra per osservare la differenza. Il testo originale rimane intero.

less -NS access.log

Seguire nuove righe di log

Prepara application.log con printf 'avvio\n' > application.log e aprilo con il comando seguente. Da un secondo terminale, nella stessa cartella, esegui printf 'nuova voce\n' >> application.log: la riga aggiunta deve comparire nel pager. Per interrompere l’attesa usa normalmente Ctrl+C, quindi cerca o scorri le righe precedenti; alcuni sistemi consentono anche Ctrl+X, come indicato dal messaggio a schermo. F riattiva l’attesa; dopo averla interrotta, q esce. Non usare un flusso reale senza fine per una semplice prova.

less +F application.log

Conservare i colori di un output conosciuto

Prepara app.log con printf 'ok\nfailed richiesta\nfailed connessione\n' > app.log. GNU grep seleziona le due righe contenenti failed e, con --color=always, emette i colori anche nella pipe; less -R li visualizza. La resa dipende dal terminale e dalla configurazione di grep. -R non crea colori da solo e non va considerato un filtro di sicurezza per qualsiasi contenuto non attendibile. Per leggere il testo senza interpretarli, ometti -R.

grep --color=always -n 'failed' app.log | less -R

less e comandi correlati

Comando Ruolo principale Quando usarlo
less Paginazione e ricerca bidirezionale File lunghi e output
more Paginazione di base schermo per schermo Una consultazione semplice; funzioni e tasti dipendono dall’implementazione
cat Scrittura del contenuto sullo standard output File brevi o concatenazione; non offre navigazione interattiva
tail -f Visualizzazione delle ultime righe e delle nuove aggiunte Monitoraggio continuo; non è un pager per cercare all’indietro

Avvertenze importanti

I tasti del pager non sono comandi della shell

Le ricerche e i movimenti si inseriscono dentro less. Per i comandi che includono un testo di ricerca premi Invio alla fine; i singoli tasti g, G, n e q hanno invece effetto immediato. Se non riesci a uscire mentre compare il messaggio di attesa, interrompi prima la modalità F e poi premi q. Evita di avviare funzioni esterne, come editor o shell, quando vuoi soltanto consultare il file.

Distinguere colori e controlli del terminale

-r inoltra i caratteri di controllo in modo molto più ampio e può rendere lo schermo illeggibile o attivare funzioni del terminale. Preferisci la visualizzazione normale, oppure -R solo quando serve a un output conosciuto. Nelle versioni recenti -R comprende anche i collegamenti OSC 8, e variabili come LESSANSIOSCALLOW possono ampliarne il comportamento: non equivale a “solo colori, sempre sicuri”. Consulta il manuale della versione installata prima di cambiare queste impostazioni.

La rotazione dei log può cambiare ciò che viene seguito

Con F, il nome di un file sostituito durante la rotazione non garantisce che less passi automaticamente al nuovo file: può continuare a seguire quello già aperto. L’opzione --follow-name, insieme alla modalità F, controlla periodicamente il percorso e riapre il file quando cambia; la disponibilità va verificata nel manuale locale. Per il journal di systemd, journalctl -f segue il flusso del servizio di registrazione senza scegliere un singolo file di testo ruotato.

FAQ

Come si esce da less?

Nella navigazione normale premi q. Durante l’attesa F o +F interrompi prima con Ctrl+C, oppure con il tasto alternativo indicato dal pager, e poi premi q.

Come passo alla corrispondenza di ricerca successiva?

Premi n per ripetere nella direzione dell’ultima ricerca e N per la direzione opposta. Dopo / si procede verso il fondo; dopo ? si procede verso l’inizio. Se la ricerca non trova altre corrispondenze, less lo segnala.

Come posso evitare che le righe lunghe vadano a capo?

Avvia less con -S e usa le frecce destra e sinistra. Viene nascosta soltanto la parte oltre il bordo, senza eliminare dati dal file. Senza -S le righe lunghe normalmente vanno a capo sullo schermo.

Less carica un intero file di grandi dimensioni in memoria?

Un normale file non deve essere caricato interamente prima di iniziare la lettura. Una pipe è diversa: less conserva i dati già letti in un buffer che, per impostazione predefinita, può crescere in memoria. Raggiungere la fine con G o eseguire ricerche estese può richiedere molta lettura; una pipe ancora aperta può far attendere. L’opzione -B limita il buffer delle pipe ma può perdere il testo precedente dalla consultazione: non è una riduzione di memoria senza conseguenze. Controlla il manuale per limiti e configurazione.

Fonti e documentazione