Come utilizzare il comando look su Linux

Il comando di sguardo di Linux corre attraverso un file ed elenca tutte le righe che iniziano con una particolare parola o frase. Ma attenzione! Si comporta in modo diverso su diverse distribuzioni Linux. Questo tutorial ti mostrerà come usarlo.

Il comando look di Ubuntu si comporta diversamente

Per un comando semplice, ma utile, guarda sicuramente mi ha dato il runaround quando stavo cercando questo articolo. C’erano due problemi: compatibilità e documentazione.

Questo articolo è stato verificato utilizzando Ubuntu, Fedora e Manjaro. look era incluso in ciascuna di queste distribuzioni, il che era fantastico. Il problema era che il comportamento non era lo stesso in tutti e tre. La versione di Ubuntu era molto diversa. Secondo il Manpage di Ubuntu, il comportamento dovrebbe essere lo stesso.

Alla fine l’ho capito. look utilizza tradizionalmente un file ricerca binaria, mentre il look di Ubuntu utilizza un file ricerca lineare. Le pagine man online di Ubuntu per Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) e Disco Dingo (19.04) dicono tutte che la versione di Ubuntu utilizza una ricerca binaria, il che non è il caso.

Se diamo un’occhiata alla pagina man locale di Ubuntu, vediamo che afferma chiaramente che il loro aspetto utilizza una ricerca lineare. C’è un’opzione della riga di comando per forzare l’uso di una ricerca binaria. Nessuna delle versioni nelle altre distribuzioni ha un’opzione per scegliere tra i metodi di ricerca.

man look

Scorrendo verso il basso nella pagina man, vediamo la sezione che descrive questa versione di look utilizzando una ricerca lineare invece che binaria.

Ubuntu guarda la pagina man in una finestra di terminale.

La morale della storia è controllare prima le pagine man locali.

Ricerca lineare e ricerca binaria

Il metodo di ricerca binaria è più veloce ed efficiente di una ricerca lineare. Lavorare con file di grandi dimensioni lo rende molto evidente. Lo svantaggio della ricerca binaria è che il tuo file deve essere ordinato. Se non vuoi ordinare il tuo file, ordinane una copia e poi usalo con look.

Lo dimostreremo altrove in questo articolo. Tieni solo presente che su Fedora, Manjaro e mi aspetto la maggior parte del resto del mondo Linux, dovrai creare una copia ordinata del tuo file e lavorarci sopra.

Installazione di parole

look può funzionare con qualsiasi file di testo scelto oppure può funzionare con il file di dizionario locale “parole”.

Su Manjaro è necessario installare il file “words”. Usa questo comando:

sudo pacman -Syu words

Usando lo sguardo

Per questo articolo, lavoreremo con un file di testo di Edward Lear poesia “The Jumblies”.

Diamo un’occhiata al suo contenuto con questo comando:

less the-jumblies.txt

Ecco la prima parte della poesia. Nota che stiamo usando Ubuntu, quindi il file rimane non ordinato. Per Fedora e Manjaro, lavoreremmo con una copia ordinata del file, che tratteremo più avanti in questo articolo.

Se cerchiamo righe che iniziano con la parola “Loro”, scopriremo cosa hanno fatto i Jumblies.

look They the-jumblies.txt

look risponde elencando queste righe:

Uscita da

Ignorare le maiuscole / minuscole

Per fare in modo che l’aspetto ignori le differenze tra maiuscole e minuscole, usa l’opzione -f (ignora maiuscole e minuscole). Abbiamo usato di nuovo “loro” come parola di ricerca, ma questa volta è in minuscolo.

look -f they the-jumblies.txt

guarda -se sono il-jumblies.txt in una finestra di terminale.

Questa volta, i risultati includono una linea in più.

Uscita da

La riga che inizia con “LORO” è stata persa nell’ultimo set di risultati perché è tutta maiuscola e non corrisponde al nostro termine di ricerca, “Loro”.

Ignorare maiuscole e minuscole consente allo sguardo di includerlo nei risultati.

Utilizzo di look con un file ordinato

Se la tua distribuzione Linux ha una versione di look che segue il comportamento tradizionale di usare una ricerca binaria, devi ordinare il tuo file o lavorare con una copia ordinata di esso.

Ripetiamo il comando per cercare “Loro”, ma questa volta su Manjaro.

guarda Loro il-jumblies.txt in una finestra di terminale.

Come puoi vedere, nessun risultato è stato restituito. Ma sappiamo che nella poesia ci sono versi che iniziano con la parola “Loro”.

Facciamo una copia ordinata del file. Se intendi utilizzare le opzioni -f (ignora maiuscole / minuscole) o -d (solo caratteri alfanumerici e spazi) con look, devi usarle quando ordini il file.

L’opzione -o (output) consente di specificare il nome del file a cui aggiungere le righe ordinate. In questo esempio, è “ordinato.txt”.

sort -f -d the-jumblies.txt -o sorted.txt

sort -f -d the-jumblies.txt -o ordinato.txt in una finestra di terminale.

Usiamo look sul file ordinato.txt e poi usiamo le opzioni -f e -d.

sort -f -d the-jumblies.txt -o ordinato.txt in una finestra di terminale.

Ora otteniamo i risultati che ci aspettavamo.

Considera solo spazi e caratteri alfanumerici

Per far sì che lo sguardo ignori tutto ciò che non è un file carattere alfanumerico o uno spazio, usa l’opzione -d (alfanumerico).

Vediamo se ci sono parole che iniziano con “Oh”.

look -f oh the-jumblies.txt

guarda -f oh the-jumblies.txt in una finestra di terminale.

Nessun risultato viene restituito dallo sguardo.

Riproviamo e diciamo a look di ignorare qualsiasi cosa tranne i caratteri alfanumerici e gli spazi. Ciò significa che caratteri e simboli, come la punteggiatura, verranno ignorati.

look -f -d oh the-jumblies.txt

guarda -f -d oh the-jumblies.txt in una finestra di terminale.

Questa volta otteniamo un risultato. Non abbiamo trovato questa riga prima perché le virgolette e il punto esclamativo confondevano la ricerca.

Uscita da

Specificare il carattere finale

Puoi dire al look di usare un carattere specifico come carattere finale. Di solito, gli spazi e la fine delle righe vengono utilizzati come carattere di chiusura.

L’opzione -t (termina carattere) ci permette di specificare il carattere che vorremmo usare. In questo esempio, useremo il carattere apostrofo. Dobbiamo citarlo con una barra all’indietro in modo che lo sguardo sappia che non stiamo aprendo una stringa.

Citiamo anche il termine di ricerca perché include uno spazio. Stiamo cercando due parole.

look -f -t ' "they call" the-jumblies.txt

guarda -f -t '

I risultati corrispondono al termine di ricerca, terminato dall’apostrofo che abbiamo utilizzato come carattere di terminazione.

Uscita da

Utilizzo di look Without a File

Se non fornisci un nome di file sulla riga di comando, guarda usa il file di parole.

Il comando:

dà questi risultati:

Queste sono tutte le parole nel file che iniziano con la parola “cerchio”.

non guardare oltre

È tutto quello che c’è da guardare.

È abbastanza facile una volta che sai che ci sono comportamenti diversi tra le diverse distribuzioni Linux e hai toccato il fondo se la tua versione utilizza una ricerca binaria o lineare.