Ack: A Better Grep
Als je al ervaring hebt met het gebruik van de Linux-opdrachtregel, heb je ongetwijfeld "grep" gebruikt om te zoeken naar tekenreeksen, of deze nu uit bestanden of uit opdrachten afkomstig zijn. Er is een betere manier om dit te doen, en het heet Ack.
Ack is een programma geschreven in Perl en wil een vervanger zijn voor de eerbiedwaardige oude Grep, die al sinds het begin van de jaren '70 bestaat. (In het geval dat je je afvraagt, staat grep voor "Global Regular Expression Print.")
Ack's auteur, Andy Lester, is er zo van overtuigd dat Ack beter is dan grep, dat de website van zijn project betterthangrep.com heet.
Je kunt het op een paar manieren krijgen. Als u een gewone Perl-gebruiker bent, kunt u CPAN gebruiken om het te installeren, misschien met Perlbrew zoals ik in een eerder artikel heb geschetst. Cpanminus is een populaire lichtgewicht CPAN-client. Om Ack ermee te installeren, gebruik je gewoon deze opdracht:
cpanm-app :: Ack
Natuurlijk, als u Ubuntu gebruikt en wilt installeren via apt-get, kunt u dat ook doen, hoewel Ubuntu de neiging heeft achter de nieuwste versie van de ontwikkelaar te staan. Gebruik gewoon deze opdracht:
sudo apt-get install ack-grep
Je kunt Ack ongeveer zo gebruiken als je kunt met Grep. Als u bijvoorbeeld de naam "maketecheasier" in het bestand mte.txt wilt vinden, gebruikt u gewoon deze opdracht:
ack maktecheasier mte.txt
Of u kunt de uitvoer hier naartoe omleiden:
kat | ack maketecheasier
Een van de belangrijkste functies die nieuwe gebruikers zullen opmerken, is dat het een mooie visuele highlight geeft aan uw zoekreeks in de uitvoer, wat betekent dat u precies kunt zien of u precies overeenkomt met wat u zoekt.
Als u met een gecompliceerde reguliere expressie zoekt, kunt u zien wat exact overeenkomt, terwijl u ook false positives detecteert.
Een andere handige functie is dat Ack automatisch recursief zoekt naar bestanden. Dit betekent dat Ack niet alleen alle bestanden in een map zal doorzoeken als u er een geeft, als die map andere mappen bevat, maar ook die zal doorzoeken, totdat u de onderkant van de mappenboom ziet. Dit is vooral handig voor programmeurs (en als je er een bent, weet je waarschijnlijk al wat recursief betekent), maar het is ook erg handig als je op zoek bent naar een patroon in een aantal platte tekstbestanden.
En als het over programmeren gaat, kunt u uw zoekopdracht verfijnen tot een variëteit aan populaire programmeertalen. Hier is een voorbeeld met Perl:
ack --perl 'somepattern' / mijn / map
U kunt nog meer voorbeelden vinden in de sectie "Ack's files" van de documentatie.
Omdat Ack is geschreven in Perl, is het automatisch compatibel met de reguliere expressies van Perl. Reguliere expressies is een soort van super-precieze tekst zoeken, waardoor je heel specifieke tekstpatronen kunt vinden.
De beste en grappigste functie is de " --thpppt
" optie, die een ASCII-art drawing van Bill the Cat oproept:
_ / | \ 'oO' = (___) = U ack --thppt!
Omdat Unix en Linux het relatief eenvoudig maken om programma's te schrijven, is het mogelijk om eenvoudig vervangingen voor veelgebruikte systeemprogramma's te maken. Ack is er een die de creativiteit van de Perl- en Unix / Linux-gemeenschappen laat zien.