Ack: En bättre grep
Om du har någon erfarenhet alls med hjälp av Linux-kommandoraden, har du utan tvekan använt "grep" för att söka efter strängar av text, oavsett om de kommer från filer eller kommandon. Det finns ett bättre sätt att göra det, och det heter Ack.
Ack är ett program skrivet i Perl som syftar till att vara en ersättare för den ärafulla gamla Grep, som har funnits sedan början av 70-talet. (Om du undrar, står grep för "Global Regular Expression Print.")
Acks författare, Andy Lester, är så säker på att Ack är bättre än grep, att hans projekt hemsida heter betterthangrep.com.
Du kan få det på några sätt. Om du är en vanlig Perl-användare kan du använda CPAN för att installera den, kanske med Perlbrew som jag skisserade i en tidigare artikel. Cpanminus är en populär lättvikts-CPAN-klient. För att installera Ack med det, använd bara det här kommandot:
cpanm App :: Ack
Självklart, om du använder Ubuntu och vill installera den via apt-get, kan du också göra det, även om Ubuntu tenderar att ligga bakom utvecklarens senaste version. Använd bara det här kommandot:
sudo apt-get install ack-grep
Du kan använda Ack ganska mycket som du kan använda grep. Till exempel, för att hitta namnet "maketecheasier" i filen mte.txt, använd bara det här kommandot:
ack maktecheasier mte.txt
Eller du kan omdirigera utmatningen till den:
katt | ack maketecheasier
En av de viktigaste funktionerna som nya användare kommer att märka är att det ger en fin visuell markering till din söksträng i utmatningen, vilket innebär att du kan se exakt om du matchar det du söker.
Om du söker med ett komplicerat regelbundet uttryck kan du se vad som exakt matchar samtidigt som du upptäcker falska positiva.
En annan användbar funktion är att Ack automatiskt söker efter filer rekursivt. Det betyder att Ack inte bara kommer att söka igenom alla filer i en katalog om du ger den en, om den katalogen innehåller andra kataloger, så söker den också, tills du kommer till botten av katalogträdet. Detta är särskilt användbart för programmerare (och om du är en, vet du förmodligen vad rekursiva medel), men det är också mycket användbart om du letar efter ett mönster i en massa vanliga textfiler.
Och när det gäller programmering kan du begränsa din sökning till en mängd populära programmeringsspråk. Här är ett exempel med Perl:
ack -perl 'somepattern' / min / katalog
Du kan hitta ännu fler exempel i avsnittet "Acks filtyper" i dokumentationen.
Eftersom Ack är skrivet i Perl, är det automatiskt kompatibelt med Perls reguljära uttryck. Regelbundna uttryck är en typ av superexakt textsökning, så att du hittar väldigt specifika textmönster.
Den bästa och roligaste funktionen är alternativet " --thpppt
" som kallar en ASCII-teckning av Bill the Cat:
_ / | \ 'oO' = (___) = O ack --thppt!
Eftersom Unix och Linux gör det relativt enkelt att skriva program, är det möjligt att enkelt skapa ersättningar för vanliga systemprogram. Ack är en av de som visar kreativiteten hos Perl och Unix / Linux-samhällena.