Di recente ho letto l'articolo di Scott Nesbitt "Usare meno per visualizzare i file di testo sulla riga di comando di Linux" e sono stato ispirato a condividere suggerimenti e trucchi aggiuntivi che uso con less
.
LESS env var
Se hai una variabile d'ambiente LESS
definito (ad esempio, nel tuo .bashrc
), less
lo considera come un elenco di opzioni, come se fosse passato sulla riga di comando.
Io uso questo:
LESS='-C -M -I -j 10 -# 4'
Questi significano:
-C
– Rendi più veloci le ristampe a schermo intero non scorrendo dal basso.-M
– Mostra più informazioni dall'ultima riga (di stato). Puoi personalizzare le informazioni mostrate con-PM
, ma di solito non mi preoccupo.-I
– Ignora maiuscolo/minuscolo (superiore/inferiore) nelle ricerche.-j 10
– Mostra i risultati della ricerca nella riga 10 del terminale, invece della prima riga. In questo modo hai 10 righe di contesto ogni volta che premin
(oN
) per passare alla corrispondenza successiva (o precedente).-# 4
– Salta quattro caratteri a destra o a sinistra quando premi il tasto freccia destra o sinistra. L'impostazione predefinita è saltare metà dello schermo, che di solito trovo troppo. In generale,less
sembra essere (almeno in parte) ottimizzato per l'ambiente in cui è stato inizialmente sviluppato, con modem lenti e connessioni Internet a bassa larghezza di banda, quando aveva senso saltare mezzo schermo.
Var. ambiente PAGER
Molti programmi mostrano le informazioni usando il comando impostato nel PAGER
variabile di ambiente (se impostata). Quindi puoi impostare PAGER=less
nel tuo .bashrc
e fai in modo che il tuo programma venga eseguito less
. Controlla la pagina man environ(7) (man 7 environ
) per altre variabili simili.
-S
Programmazione e sviluppo
- Blog degli sviluppatori Red Hat
- Programmazione cheat sheet
- Prova gratuitamente:Red Hat Learning Subscription
- eBook:un'introduzione alla programmazione con Bash
- Cheat sheet per gli script di Bash Shell
- eBook:modernizzare Enterprise Java
L'opzione della riga di comando -S
dice less
per tagliare lunghe code invece di avvolgerle. Raramente ne trovo la necessità a meno che (e fino a quando) non ho iniziato a visualizzare un file. Fortunatamente, puoi digitare tutte le opzioni della riga di comando all'interno di less
come se fossero comandi da tastiera. Quindi, se voglio tagliare lunghe righe mentre sono già in un file, posso semplicemente digitare -S
.
Ecco un esempio che uso molto:
su - postgres
export PAGER=less # Because I didn't bother editing postgres' .bashrc on all the machines I use it on
psql
A volte, quando in seguito visualizzo l'output di un SELECT
comando con un output molto ampio, digito -S
quindi sarà formattato bene. Se salta troppo lontano quando premo la freccia destra per vedere di più (perché non ho impostato -#
), posso digitare -#8
, quindi ogni pressione della freccia destra sposterà otto caratteri a destra.
A volte dopo aver digitato -S
troppe volte, esco da psql e lo eseguo di nuovo dopo aver inserito:
export LESS=-S
V
Il comando F
rende less
funziona come tail -f
—in attesa che vengano aggiunti altri dati al file prima di mostrarlo. Un vantaggio rispetto a tail -f
è che l'evidenziazione delle corrispondenze di ricerca funziona ancora. Quindi puoi inserire less /var/log/logfile
, cerca qualcosa, che evidenzierà tutte le sue occorrenze (a meno che tu non abbia usato -g
)—e quindi premere F
. Quando più dati vengono scritti nel registro, less
lo mostrerà ed evidenzierà le nuove corrispondenze.
Dopo aver premuto F
, puoi premere Ctrl+C
per impedirgli di cercare nuovi dati (questo non lo ucciderà); torna nel file per vedere cose più vecchie, cercare altre cose, ecc.; e quindi premere F
di nuovo per esaminare più nuovi dati.
Ricerca
Le ricerche utilizzano la libreria regexp del sistema e questo di solito significa che puoi usare espressioni regolari estese. In particolare, cercando one|two|three
troverà ed evidenzierà tutte le occorrenze di uno, due o tre.
Un altro modello che uso molto, specialmente con righe di registro larghe (ad esempio, quelle che si estendono su più di una riga di terminale), è .*something.*
, che evidenzia l'intera riga. Questo modello rende molto più facile vedere dove inizia e dove finisce una linea. Li combino anche, come:.*one thing.*|.*another thing.*
o key: .*|.*marker.*
per vedere il contenuto della key
(ad esempio, in un file di registro con un dump di un dizionario/hash) ed evidenziare le righe di marker rilevanti (quindi ho un contesto), o anche, se so che il valore è racchiuso tra virgolette:
key: '[^']*'|.*marker.*
less
mantiene una cronologia degli elementi di ricerca e li salva su disco per invocazioni future. Quando premi /
(o ?
), puoi scorrere questa cronologia con la freccia su o giù (oltre a modificare le righe di base).
Mi sono imbattuto in quella che sembra essere una funzionalità molto utile quando ho sfogliato il less
pagina man durante la stesura di questo articolo:saltare righe poco interessanti con &!pattern
. Ad esempio, mentre cerchi qualcosa in /var/log/messages
, ero solito scorrere questo elenco di comandi:
cat /var/log/messages | egrep -v 'systemd: Started Session' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session|User Slice' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session|User Slice|dbus' | less
cat /var/log/messages | egrep -v 'systemd: Started Session|systemd: Starting Session|User Slice|dbus|PackageKit Daemon' | less
Ma ora so come fare la stessa cosa all'interno di less
. Ad esempio, posso digitare &!systemd: Started Session
, quindi decido che voglio sbarazzarmi di systemd: Starting Session
, quindi lo aggiungo digitando &!
e usa la freccia su per ottenere la ricerca precedente dalla cronologia. Quindi digito |systemd: Starting Session
e premi Enter
, continuando ad aggiungere più elementi allo stesso modo finché non ne elimino abbastanza per vedere gli elementi più interessanti.
=
Il comando =
mostra più informazioni sul file e sulla posizione, anche più di -M
. Se il file è molto lungo e calcola =
impiega troppo tempo, puoi premere Ctrl+C
e smetterà di provare.
Se il contenuto che stai visualizzando proviene da una pipe anziché da un file, =
(e -M
) non mostrerà ciò che non conosce, incluso il numero di righe e byte nel file. Per vedere quei dati, se conosci quel command
finirà rapidamente, puoi saltare alla fine con G
, quindi less
inizierà a mostrare tali informazioni.
Se premi G
e la scrittura del comando sulla pipe richiede più tempo del previsto, puoi premere Ctrl+C
e il comando verrà ucciso. Premendo Ctrl+C
lo ucciderà anche se non hai premuto G
, quindi fai attenzione a non premere Ctrl+C
accidentalmente se non hai intenzione di ucciderlo. Per questo motivo, se il comando fa qualcosa (ovvero, non mostra solo informazioni), di solito è più sicuro scrivere il suo output in un file e visualizzare il file in un terminale separato, invece di usare una pipe.
Perché hai bisogno di meno
less
è un programma molto potente e contrario ai nuovi concorrenti in questo spazio, come most
e moar
, è probabile che lo trovi su quasi tutti i sistemi che usi, proprio come vi
. Quindi, anche se utilizzi visualizzatori o editor della GUI, vale la pena investire un po' di tempo nel less
pagina man, almeno per avere un'idea di ciò che è disponibile. In questo modo, quando devi fare qualcosa che potrebbe essere coperto da funzionalità esistenti, saprai di cercare nella pagina di manuale o su Internet per trovare ciò di cui hai bisogno.
Per ulteriori informazioni, visitare la home page di meno. Il sito ha una bella FAQ con più suggerimenti e trucchi.