Hur man använder look-kommandot på Linux

Linux-utseendekommandot går igenom en fil och listar alla rader som börjar med ett visst ord eller en viss fras. Men se upp! Det beter sig olika på olika Linux-distributioner. Denna handledning visar dig hur du använder den.

Ubuntus utseende Kommando beter sig annorlunda

För ett enkelt, men användbart kommando, gav titt mig verkligen genomgången när jag undersökte den här artikeln. Det fanns två problem: kompatibilitet och dokumentation.

Den här artikeln kontrollerades med Ubuntu, Fedora och Manjaro. looken följde med var och en av dessa distributioner, vilket var bra. Problemet var att beteendet inte var detsamma för alla tre. Ubuntu-versionen var väldigt annorlunda. Enligt Ubuntu Manpagesbeteendet bör vara detsamma.

Jag kom på det till slut. utseende använder traditionellt en binär sökningmedan Ubuntu-look använder en linjär sökning. Online Ubuntu-man-sidorna för Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) och Disco Dingo (19.04) säger alla att Ubuntu-versionen använder en binär sökning, vilket inte är fallet.

Om vi ​​tar en titt på den lokala Ubuntu-mansidan ser vi att det tydligt står att deras utseende använder en linjär sökning. Det finns ett kommandoradsalternativ för att tvinga den att använda en binär sökning. Ingen av versionerna i de andra distributionerna har en möjlighet att välja mellan sökmetoder.

man look

Scrollar vi ner genom man-sidan ser vi avsnittet som beskriver denna version av utseendet med hjälp av en linjär istället för binär sökning.

Moralen i berättelsen är att först kontrollera de lokala mansidorna.

Linjär sökning kontra binär sökning

Den binära sökmetoden är snabbare och mer effektiv än en linjär sökning. Att arbeta med stora filer gör detta mycket uppenbart. Nackdelen med den binära sökningen är att din fil måste sorteras. Om du inte vill sortera din fil, sortera en kopia av den och använd den sedan med utseende.

Vi kommer att visa detta på andra ställen i den här artikeln. Var bara medveten om att på Fedora, Manjaro, och jag förväntar mig det mesta av resten av Linux-världen, måste du skapa en sorterad kopia av din fil och arbeta med den.

Installera ord

look kan fungera med vilken textfil du väljer, eller så kan den fungera med den lokala ordboksfilen ”ord”.

På Manjaro måste du installera ”words”-filen. Använd detta kommando:

sudo pacman -Syu words

Använder utseende

För den här artikeln kommer vi att arbeta med en textfil av Edward Lear dikten ”The Jumblies.”

Låt oss titta på dess innehåll med detta kommando:

less the-jumblies.txt

Här är den första delen av dikten. Observera att vi använder Ubuntu, så filen förblir osorterad. För Fedora och Manjaro skulle vi arbeta med en sorterad kopia av filen, som vi kommer att täcka senare i den här artikeln.

Om vi ​​letar efter rader som börjar med ordet ”De”, får vi reda på en del av vad Jumblies gjorde.

look They the-jumblies.txt

look svarar genom att lista dessa rader:

Utgång från

Ignorerar karaktärsskifte

För att få utseende att ignorera skillnader mellan versaler och gemener, använd alternativet -f (ignorera skiftläge). Vi har använt ”de” som sökord igen, men den här gången är det med gemener.

look -f they the-jumblies.txt

Denna gång innehåller resultatet en extra rad.

Utgång från

Raden som börjar med ”DE” missades i den senaste uppsättningen resultat eftersom den står med versaler och inte matchade vår sökterm ”De”.

Om du ignorerar skiftläge kan utseendet inkluderas i resultaten.

Använda look med en sorterad fil

Om din Linux-distribution har en version av utseende som följer det traditionella beteendet att använda en binär sökning, måste du antingen sortera din fil eller arbeta med en sorterad kopia av den.

Låt oss upprepa kommandot för att söka efter ”De”, men den här gången på Manjaro.

Som du kan se returnerades inga resultat. Men vi vet att det finns rader i dikten som börjar med ordet ”De”.

Låt oss göra en sorterad kopia av filen. Om du ska använda alternativen -f (ignorera skiftläge) eller -d (endast alfanumeriska tecken och mellanslag) med utseende, måste du använda dem när du sorterar filen.

Alternativet -o (output) låter dig ange namnet på filen som de sorterade raderna ska läggas till. I det här exemplet är det ”sorted.txt.”

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

Låt oss titta på filen sorted.txt och sedan använda -f och -d alternativen.

Nu får vi de resultat vi förväntade oss.

Tänk bara på mellanslag och alfanumeriska tecken

För att göra titta ignorera allt som inte är en alfanumeriskt tecken eller ett mellanslag, använd alternativet -d (alfanumeriskt).

Låt oss se om det finns några ord som börjar med ”Oh.”

look -f oh the-jumblies.txt

Inga resultat returneras av blick.

Låt oss försöka igen och säga åt look att ignorera allt annat än alfanumeriska tecken och mellanslag. Det betyder att tecken och symboler, som skiljetecken, kommer att ignoreras.

look -f -d oh the-jumblies.txt

Den här gången får vi ett resultat. Vi hittade inte den här raden tidigare eftersom citattecken och utropstecken förvirrade sökningen.

Utgång från

Specificering av det avslutande tecknet

Du kan tala om för utseende att använda ett specifikt tecken som avslutande tecken. Vanligtvis används mellanslag och radslut som det avslutande tecknet.

Alternativet -t (terminate character) låter oss ange vilket tecken vi vill använda. I det här exemplet kommer vi att använda apostroftecknet. Vi måste citera det med ett snedstreck så att blicken vet att vi inte öppnar en sträng.

Vi citerar också söktermen eftersom den innehåller ett mellanslag. Vi letar efter två ord.

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

Resultaten matchar söktermen, avslutad av apostrof som vi använde som avslutande tecken.

Använda look Without a File

Om du inte anger ett filnamn på kommandoraden använder look ordfilen.

Kommandot:

ger dessa resultat:

Det här är alla ord i filen som börjar med ordet ”cirkel”.

kolla inte vidare

Det är allt som finns att titta på.

Det är ganska enkelt när du väl vet att det finns olika beteenden över olika Linux-distributioner, och du har nått botten om din version använder en binär eller linjär sökning.