Journal La commande ack, one step beyond grep !

Posté par  (site web personnel) . Licence CC By‑SA.
26
29
nov.
2021

L'URL du site de la commande ack annonce la couleur1 : https://beyondgrep.com/. J'ai l'habitude d’agripper les motifs avec grep, mais je m'essaie depuis quelques temps à les acquérir avec ack 2. Le deuxième et dernier journal sur cette commande datant d'avril 2013 (voir le tag ack), il est temps de faire une piqûre de rappel aux citoyens du libre.

Version 3

En 2019, ack est passée en version 3. La version actuelle est la 3.5.0 (mars (…)

ack 2.0

Posté par  . Édité par Davy Defaud, Nÿco, Florent Zara, BAud et barmic. Modéré par tuiu pol. Licence CC By‑SA.
Étiquettes :
40
23
avr.
2013
Ligne de commande

La commande ack est un équivalent à grep, optimisé pour parcourir les répertoires hétérogènes de code source. Par défaut, si aucun fichier n’est donné en paramètre, ack parcourt le dossier courant.

Publiée sous Artistic License 2.0, les principales nouveautés de cette version 2 sont :

  • Par défaut, et contrairement à la version 1.x, tous les fichiers, même ceux dont le type n’est pas connu, sont parcourus. Il est possible de revenir à l’ancien comportement avec l’option -k.
  • L’identification du type de fichier est améliorée, elle se base soit sur l’extension (.rb identifie un fichier de type Ruby), soit sur le nom (Rakefile identifie un fichier de type Ruby), soit sur le contenu du fichier (/#!.+ruby/ dans la première ligne d’un fichier identifie également un fichier de type de Ruby).
  • Les fichiers de configuration sont plus granulaires : /etc/ackrc est global au système, ~/.ackrc est spécifique à l’utilisateur et l’on peut avoir un fichier spécifique au projet courant.
  • L’option -x dit à ack de parcourir la liste de fichiers envoyée via stdin à la manière de xargs, ce qui permet d’écrire des commandes du genre git ls|ack --type=cpp -x foo.

Il est aussi possible d’écrire des greffons en Perl pour aller lire d’autres types de fichiers comme une archive ZIP ou un classeur ODF.

N. B. : Attention, sous Debian et Ubuntu, le logiciel s’appelle ack-grep (ack existant déjà). Le site officiel d’ack présente la méthode pour l’installer en tant que ack, qui est plus propre que celle décrite dans la page de manuel du paquet ack-grep (dans la dernière question de la FAQ).

ack 1.96 — mieux que grep

Posté par  (site web personnel) . Modéré par Xavier Teyssier. Licence CC By‑SA.
48
20
sept.
2011
Ligne de commande

Ack est un outil qui permet de rechercher du texte à l’intérieur de fichiers. C’est donc un clone de grep avec quelques améliorations notables. Voici donc dix raisons de passer à ack si vous utilisez grep :

  1. ack est très rapide, car il ne recherche que ce que vous voulez chercher ;
  2. il recherche récursivement par défaut ;
  3. il ignore les trucs inutiles, comme les répertoires utilisés par les [VCS], les fichiers de sauvegarde (« foo~ » et « #foo# »), les binaires, etc. ;
  4. vous pouvez spécifier simplement le type de fichiers à rechercher, comme « --perl » ou « --nohtml » ;
  5. la coloration syntaxique des résultats est là par défaut ;
  6. vous pouvez utiliser les expressions régulières de Perl, pas juste le sous‐ensemble de GNU ;
  7. l’apprentissage d’ack est très simple, car il reprend les mêmes options en ligne de commande que grep (« -c », « -l », « -w », etc.) ;
  8. il est possible d’avoir des options par défaut dans un fichier « ~/.ackrc » ;
  9. la commande fait 25 % de caractères en moins à taper ;
  10. en fait, c’est même 50 % de gagné par rapport à « grep -r ».

La version 1.96 d’ack est sortie dimanche et apporte quelques améliorations notables :

  • les fichiers JavaScript « minifiés » sont ignorés par défaut ;
  • le langage Groovy est supporté (extensions : « .groovy », « .gtmpl », « .gpp », « .grunit ») ;
  • les fichiers Perl et Lua sont mieux détectés.

Note : pour installer ack sur Debian et Ubuntu, il faut faire un « apt-get install ack-grep » (et pas juste « ack »). En revanche sous Archlinux, un « pacman -S ack » sera suffisant. Les autres distributions (Fedora, Gentoo) utilisent également le simple nom « ack »).