Ack: En bedre grep
Hvis du har noen erfaring i det hele tatt med Linux-kommandolinjen, har du uten tvil brukt "grep" for å søke etter tekststrenger, enten de kommer fra filer eller fra kommandoer. Det er en bedre måte å gjøre det på, og det kalles Ack.
Ack er et program skrevet i Perl som har til hensikt å være en erstatning for den ærverdige gamle Grep, som har eksistert siden begynnelsen av 70-tallet. (Hvis du lurer på, står grep for "Global Regular Expression Print.")
Acks forfatter, Andy Lester, er så sikker på at Ack er bedre enn grep, at prosjektets nettsted heter betterthangrep.com.
Du kan få det på noen måter. Hvis du er en vanlig Perl-bruker, kan du bruke CPAN til å installere den, kanskje med Perlbrew som jeg skisserte i en tidligere artikkel. Cpanminus er en populær lettvekt CPAN klient. For å installere Ack med det, bruk bare denne kommandoen:
cpanm App :: Ack
Selvfølgelig, hvis du bruker Ubuntu og vil installere den via apt-get, kan du også gjøre det, selv om Ubuntu har en tendens til å ligge bak utviklerens nyeste versjon. Bare bruk denne kommandoen:
sudo apt-get install ack-grep
Du kan bruke Ack ganske mye slik du kan bruke grep. For eksempel, for å finne navnet "maketecheasier" i filen mte.txt, bruk bare denne kommandoen:
ack maktecheasier mte.txt
Eller du kan omdirigere utdata til det:
katt | ack maketecheasier
En av de viktigste funksjonene nye brukere vil legge merke til er at det gir et fint visuelt høydepunkt til søkestrengen i utgangen, noe som betyr at du kan se nøyaktig om du faktisk passer til det du leter etter.
Hvis du søker med et komplisert regulært uttrykk, kan du se nøyaktig hva som passer, samtidig som du oppdager falske positiver.
En annen nyttig funksjon er at Ack automatisk søker etter filer rekursivt. Dette betyr at Ack ikke bare vil søke alle filene i en katalog hvis du gir den en, hvis den katalogen inneholder andre kataloger, vil den søke i de også, til du kommer til bunnen av katalogtreet. Dette er spesielt nyttig for programmerere (og hvis du er en, vet du sannsynligvis hva rekursiv betyr), men det er også veldig nyttig hvis du leter etter et mønster i en rekke vanlige tekstfiler.
Og når det gjelder programmering, kan du begrense søket til en rekke populære programmeringsspråk. Her er et eksempel ved å bruke Perl:
akk - perl 'somepattern' / min / katalog
Du finner enda flere eksempler i delen "Acks filtyper" i dokumentasjonen.
Siden Ack er skrevet i Perl, er det automatisk kompatibelt med Perls vanlige uttrykk. Regelmessige uttrykk er en slags super-presis tekst-søk, slik at du finner svært spesifikke tekstmønstre.
Den beste og morsomste funksjonen er alternativet " --thpppt
" som kalles en ASCII-tegning av Bill the Cat:
_ / | \ 'oO' = (___) = Nå er det!
Siden Unix og Linux gjør det relativt enkelt å skrive programmer, er det mulig å enkelt lage utskiftninger for vanlige systemprogrammer. Ack er en av de som viser kreativiteten til Perl og Unix / Linux-fellesskapene.