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.
Sommario:
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.
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:
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
Questa volta, i risultati includono una linea in più.
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.
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
Usiamo look sul file ordinato.txt e poi usiamo le opzioni -f e -d.
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
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
Questa volta otteniamo un risultato. Non abbiamo trovato questa riga prima perché le virgolette e il punto esclamativo confondevano la ricerca.
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
I risultati corrispondono al termine di ricerca, terminato dall’apostrofo che abbiamo utilizzato come carattere di terminazione.
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.