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/servicesIl 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
| Tasto | Cosa fa |
|---|---|
| Spazio o f o PagGiù | Avanti di una pagina |
| b o PagSu | Indietro di una pagina |
| Invio o j o ↓ | Avanti di una riga |
| k o ↑ | Indietro di una riga |
| g | Vai all'inizio del file |
| G | Vai alla fine del file |
| 50g | Vai alla riga 50 |
| h | Mostra l'aiuto con tutti i comandi |
| q | Esci |
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:
/sshIl 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/servicesOgni 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 | lessEsempio 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/syslogPer 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.csvEsempio 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.
&warningEsempio 9: aprire più file
$ less introduzione.txt capitolo1.txt capitolo2.txtCon :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 -RSe 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);-Ile 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" (cometail -f).+G: apre il file direttamente alla fine.+/testo: apre il file alla prima occorrenza del testo.
Attenzione a
- Come si esce: per chiudere
lesssi 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-Xsi evita, ma è più semplice rilanciare il comando. - Si legge e basta:
lessnon modifica i file. Per modificare, premendo v dentrolesssi apre il file nell'editor predefinito. - I file compressi: per leggere un
.gzsenza decomprimerlo c'èzless file.gz. - Negli script:
lessè un programma interattivo e aspetta la tastiera. Usarlo in uno script lo blocca. Lì servonocat,headotail. - Righe molto lunghe: con file di una sola riga enorme (come certi file JSON compressi su una riga),
lesspuò rallentare.
Riepilogo
| Comando | Cosa fa |
|---|---|
less file | Apre il file in lettura a pagine |
less -N file | Mostra i numeri di riga |
less -S file | Non manda a capo le righe lunghe |
comando | less | Impagina l'output di un altro comando |
less +F file | Segue il file in tempo reale |
less +G file | Apre il file alla fine |
/testo (dentro less) | Cerca un testo in avanti |
| q (dentro less) | Esce da less |