Salta al contenuto principale

less: leggi i file lunghi una pagina alla volta

Inviato da tuxsa il

less mostra un file di testo una schermata alla volta, permettendoti di scorrere avanti e indietro e di cercare parole al suo interno. È la risposta alla domanda che nasce subito dopo cat: cosa faccio quando il file è lungo migliaia di righe?

Cos'è

less è un pager, cioè un programma che impagina l'output. Il nome è un gioco di parole: il suo predecessore si chiamava more ("di più") e permetteva solo di andare avanti; less ("di meno") ne è la versione migliorata, e il motto è proprio "less is more". Non fa parte di GNU coreutils ma è un progetto a sé (pacchetto less), installato di serie sulla maggior parte delle distribuzioni.

Lo hai già usato senza saperlo: i manuali del comando man e molti output di git o journalctl passano proprio da less.

Cosa fa

Apre il file in una schermata interattiva, senza caricarlo tutto in memoria: per questo parte subito anche con file di molti gigabyte. Non modifica il file: puoi solo leggerlo. Resta aperto finché non premi q.

Come si usa

Sintassi base:

$ less [opzioni] [file...]

Esempio 1: aprire un file

$ less /etc/services

Il file viene mostrato a schermo e in basso compare il nome, o i due punti : in attesa di un comando. Da qui ci si muove con la tastiera.

Esempio 2: muoversi nel file

TastoCosa fa
Spazio o f o PagGiùAvanti di una pagina
b o PagSuIndietro di una pagina
Invio o j o ↓Avanti di una riga
k o ↑Indietro di una riga
gVai all'inizio del file
GVai alla fine del file
50gVai alla riga 50
hMostra l'aiuto con tutti i comandi
qEsci

Se non ricordi nulla, ricordati di due tasti: h per l'aiuto e q per uscire.

Esempio 3: cercare un testo

Mentre il file è aperto, digita / seguito dalla parola e premi Invio:

/ssh

Il testo trovato viene evidenziato. Poi:

  • n salta alla corrispondenza successiva, N alla precedente.
  • ? al posto di / cerca all'indietro, verso l'inizio del file.

Di norma la ricerca distingue tra maiuscole e minuscole. Con l'opzione -i le ignora, se scrivi la parola tutta in minuscolo.

Esempio 4: numerare le righe con -N

$ less -N /etc/services

Ogni riga compare con il suo numero a sinistra: comodo per segnalare o ritrovare un punto preciso, anche in combinazione con 50g.

Esempio 5: leggere l'output di un altro comando

Con la pipe | puoi passare a less l'output di qualsiasi comando troppo lungo per lo schermo:

$ ls -l /usr/bin | less
$ dmesg | less
$ grep -r "errore" /var/log | less

Esempio 6: seguire un file che cresce con +F

Molti file di log si aggiornano di continuo. Con +F less parte in modalità "segui" e mostra le nuove righe man mano che arrivano:

$ less +F /var/log/syslog

Per fermarti e poter scorrere il file premi Ctrl+C; per riprendere a seguirlo premi F (maiuscola). Il vantaggio rispetto a tail -f è che puoi interrompere il flusso, tornare indietro, cercare, e poi riprenderlo senza chiudere nulla.

Esempio 7: righe troppo lunghe con -S

Di norma le righe più larghe dello schermo vanno a capo. Con -S (chop long lines) vengono invece tagliate e puoi scorrerle con le frecce sinistra e destra. È utile con tabelle e file CSV:

$ less -S dati.csv

Esempio 8: mostrare solo le righe che contengono un testo

Dentro less, digita & seguito da una parola e premi Invio: vengono mostrate solo le righe che la contengono, come un filtro. Per tornare al file completo, premi & e poi Invio senza scrivere nulla.

&warning

Esempio 9: aprire più file

$ less introduzione.txt capitolo1.txt capitolo2.txt

Con :n passi al file successivo, con :p torni al precedente.

Esempio 10: mantenere i colori e impostare le preferenze

Alcuni comandi producono output colorato. Per vederlo in less serve -R (raw):

$ ls --color=always | less -R

Se ci sono opzioni che usi sempre, puoi impostarle una volta per tutte nella variabile d'ambiente LESS, aggiungendo una riga al file ~/.bashrc:

export LESS='-iR'

Da quel momento less, e quindi anche man, partono con la ricerca che ignora le maiuscole e i colori attivi.

Opzioni utili

  • -N: mostra i numeri di riga.
  • -i: ricerca senza distinguere maiuscole e minuscole (se scrivi tutto in minuscolo); -I le ignora sempre.
  • -S: non manda a capo le righe lunghe.
  • -R: mostra correttamente i colori.
  • -F: esce subito se il contenuto sta tutto in una schermata.
  • -X: non cancella lo schermo all'uscita, lasciando il testo visibile nel terminale.
  • +F: parte in modalità "segui" (come tail -f).
  • +G: apre il file direttamente alla fine.
  • +/testo: apre il file alla prima occorrenza del testo.

Attenzione a

  • Come si esce: per chiudere less si preme q. Premere Ctrl+C non basta, a meno che tu non sia in modalità "segui".
  • Il testo sparisce all'uscita: quando chiudi less, lo schermo torna com'era prima e ciò che hai letto non resta nel terminale. Con -X si evita, ma è più semplice rilanciare il comando.
  • Si legge e basta: less non modifica i file. Per modificare, premendo v dentro less si apre il file nell'editor predefinito.
  • I file compressi: per leggere un .gz senza decomprimerlo c'è zless file.gz.
  • Negli script: less è un programma interattivo e aspetta la tastiera. Usarlo in uno script lo blocca. Lì servono cat, head o tail.
  • Righe molto lunghe: con file di una sola riga enorme (come certi file JSON compressi su una riga), less può rallentare.

Riepilogo

ComandoCosa fa
less fileApre il file in lettura a pagine
less -N fileMostra i numeri di riga
less -S fileNon manda a capo le righe lunghe
comando | lessImpagina l'output di un altro comando
less +F fileSegue il file in tempo reale
less +G fileApre il file alla fine
/testo (dentro less)Cerca un testo in avanti
q (dentro less)Esce da less