Ack: A Better Grep
Hvis du har nogen erfaring overhovedet ved hjælp af Linux-kommandolinjen, har du uden tvivl brugt "grep" til at søge efter tekststreng, uanset om de kommer fra filer eller kommandoer. Der er en bedre måde at gøre det på, og det hedder Ack.
Ack er et program skrevet i Perl, der har til formål at være en erstatning for den ærværdige gamle Grep, der har eksisteret siden begyndelsen af 70'erne. (Hvis du undrer dig, står grep for "Global Regular Expression Print.")
Acks forfatter, Andy Lester, er så sikker på, at Ack er bedre end grep, at hans projekt hjemmeside hedder betterthangrep.com.
Du kan få det på få måder. Hvis du er en almindelig Perl-bruger, kan du bruge CPAN til at installere det, måske med Perlbrew som jeg skitserede i en tidligere artikel. Cpanminus er en populær letvægts CPAN-klient. For at installere Ack med det, skal du blot bruge denne kommando:
cpanm App :: Ack
Selvfølgelig, hvis du bruger Ubuntu og vil installere det via apt-get, kan du også gøre det, selvom Ubuntu har tendens til at være bag udviklerens seneste version. Brug kun denne kommando:
sudo apt-get install ack-grep
Du kan bruge Ack stort set den måde du kan bruge grep på. For at finde navnet "maketecheasier" i filen mte.txt, skal du blot bruge denne kommando:
ack maktecheasier mte.txt
Eller du kan omdirigere output til det:
kat | ack maketecheasier
En af de vigtigste funktioner, nye brugere vil bemærke, er, at det giver en fin visuel fremhævning til din søgestreng i udgangen, hvilket betyder at du kan se præcis, om du faktisk matcher det, du leder efter.
Hvis du søger med et kompliceret regulært udtryk, kan du se, hvad der passer præcist, samtidig med at du opdager falske positiver.
En anden nyttig funktion er, at Ack automatisk søger filer rekursivt. Det betyder, at Ack ikke alene vil søge alle filerne i en mappe, hvis du giver den en, hvis den mappe indeholder andre mapper, vil den også søge dem, indtil du kommer til bunden af katalogtræet. Dette er især nyttigt for programmører (og hvis du er en, ved du sikkert allerede hvad rekursive midler), men det er også meget nyttigt, hvis du leder efter et mønster i en flok almindelige tekstfiler.
Og når du taler om programmering, kan du indsnævre din søgning til en række populære programmeringssprog. Her er et eksempel ved at bruge Perl:
akk - perl 'somepattern' / min / bibliotek
Du kan finde endnu flere eksempler i afsnittet "Acks filtyper" i dokumentationen.
Da Ack er skrevet i Perl, er det automatisk kompatibelt med Perls regulære udtryk. Regelmæssige udtryk er en slags super-præcis tekstsøgning, så du kan finde meget specifikke tekstmønstre.
Den bedste og sjoveste funktion er alternativet " --thpppt
", som kalder op en ASCII kunst tegning af Bill the Cat:
_ / | \ 'oO' = (___) = Åh!
Da Unix og Linux gør det relativt nemt at skrive programmer, er det muligt at nemt lave udskiftninger til almindelige systemprogrammer. Ack er en af dem, der viser kreativiteten i Perl og Unix / Linux-fællesskaberne.