È da un po’ di tempo che mi riprometto di scrivere qualche riga in italiano a proposito di ack. Benché sia disponibile in molte distribuzioni Linux, questo software non è ancora così largamente conosciuto dagli utenti.

Si tratta di un sostituto, alquanto migliorato, del noto comando grep disponibile in pratica su ogni Unix esistente. I vantaggi consistono in una serie di feature aggiuntive, e in una configurazione di default che fa quasi sempre “ciò che si desidera” (con grep, infatti, è spesso scontato dovergli passare una serie di flag per farlo comportare come ci si aspetta).

Ispirandomi alla lista indicata sul sito ufficiale, ecco un po’ di ragioni per utilizzare ack:

  • Colora i risultati delle ricerche, rendendoli chiari e leggibili.
  • Di default, ricerca in maniera ricorsiva.
  • Ignora (di default) le directory .svn, .git, CVS e tutte quelle dei più conosciuti software di VCS: personalmente, non mi sono mai imbattuto nella necessità di ricercare in quelle directory, e dubito ciò accadrà mai. Questa impostazione, chiaramente, causa un notevole aumento della velocità di esecuzione nel checkout di un VCS.
  • Ignora in automatico file all’interno dei quali è difficile che si desideri ricercare (binari, file di backup tipo pippo~ e #pippo#, core dump, … È chiaramente possibile forzare la ricerca in tutti i file tramite lo switch -a.
  • Permette, in maniera semplice, di indicare il tipo di file da cercare. Ad esempio –perl cerca in file con estensione .pl, .pm e .pod e in quelli senza estensione aventi una shebang riconducibile a Perl (insomma in tutto ciò che si sospetta sia perlish); è possibile anche escludere un determinato linguaggio (ad es. –nopython). Per fare ciò utilizzando grep c’è un po’ da scrivere… ;-)
  • Permette di utilizzare le regular expression di Perl, più complete del subset GNU utilizzato da grep.
  • Possibilità di trovare facilmente tutti i file di un determinato tipo. Ad esempio, ack -f -html cerca in maniera ricorsiva tutti i file HTML (.htm, .html, …) e ne visualizza la lista.
  • Molti switch sono uguali a quelli di grep, quindi l’utilizzo ack dovrebbe risultare intuitivo si dall’inizio.
  • È in Perl, senza parti compilate, quindi gira perfettamente ovunque (anche su Windows, sì!).

Per installarlo, scaricatelo dal sito ufficiale o, se usate Linux, cercatelo tra i pacchetti della vostra distribuzione. Ad esempio su Gentoo esiste l’ebuild ack, mentre su Ubuntu/Debian è presente il pacchetto ack-grep.