GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer et utiliser la commande Ack sous Linux avec des exemples

Le système d'exploitation Linux vous permet de rechercher à la fois des structures de répertoires et des fichiers de répertoires pour des correspondances de chaînes de texte spécifiques. Un outil commun qui nous aide à réaliser ces recherches dans l'annuaire est un grep (impression d'expression régulière globale ) commande. L'utilisation d'expressions régulières par grep permet d'initier n'importe quelle recherche de modèle de chaîne vers une sortie textuelle correspondante sur la ligne de commande.

[ Vous pourriez également aimer :Ripgrep - L'outil de recherche de ligne de commande le plus rapide pour Linux ]

Cependant, les inconvénients de grep sont dans sa vitesse et ses fonctionnalités non flexibles. C'est là que le ack l'outil prend le relais. Il permet des recherches rapides qui s'étendent aux recherches dans les répertoires de code source tout en offrant à un utilisateur Linux la possibilité d'exclure certaines sorties des résultats de recherche.

Comment installer Ack sous Linux

Toute plate-forme prise en charge par Perl peut accueillir le ack outil de recherche. Nous l'installons en référençant son package principal, ack-grep .

$ sudo apt-get install ack-grep      [On Debian, Ubuntu and Mint]
$ sudo yum install ack-grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/ack-grep  [On Gentoo Linux]
$ sudo pacman -S ack-grep           [On Arch Linux]
$ sudo zypper install ack-grep      [On OpenSUSE]    

Acquitter la recherche dans le répertoire

Depuis reçu est attribué à être orienté code source, nous pouvons démontrer ses prouesses de recherche de modèle de chaîne via un répertoire de code source. Github est une ressource renommée pour des milliers de répertoires de code source. Un répertoire de code source de projet idéal pour ce guide d'article est le projet neovim.

Installer Git sous Linux

$ sudo apt-get install git     [On Debian, Ubuntu and Mint]
$ sudo yum install git         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/git  [On Gentoo Linux]
$ sudo pacman -S git           [On Arch Linux]
$ sudo zypper install git      [On OpenSUSE]    

Cloner le projet Neovim

Les nombreux types de fichiers différents de ce projet d'éditeur de texte neovim sont nécessaires pour notre guide d'article.

$ git clone https://github.com/neovim/neovim.git

Accédez au neovim répertoire cloné pour démarrer notre didacticiel.

$ cd neovim && ls

Le répertoire de niveau supérieur répertorié expose les fichiers de démarquage (.md) , fichiers texte (.txt) , et un fichier YAML.

Mise en œuvre de commandes de recherche d'accusé de réception simples

Étant donné que la plupart des requêtes de recherche à partir de la fenêtre du terminal Linux entraînent un défilement incontrôlable en raison de sorties infinies, nous pouvons diriger ces résultats de recherche vers "moins ” pour les instances de résultats qui dépassent la taille normale de la fenêtre du terminal.

$ echo '--pager=less -RFX' >> ~/.ackrc

L'accusé de réception ci-dessus La commande de configuration gère intelligemment les sorties de résultats débordantes.

Recherche du nombre total de fichiers dans un répertoire

Ce premier exemple de commande nous aide à distinguer l'efficacité logique de ack recherche depuis grep chercher. Via grep , nous pouvons connaître le nombre total de fichiers sur le neovim cloné projet via la commande suivante :

$ find . | wc -l

Accepter ne comptera que les fichiers qu'il juge logiquement pertinents, sa sortie sera donc différente.

$ ack -f | wc -l

Les 7 % ci-dessus (2984-2772 ) les fichiers ignorés sont ignorés de tous les ack requêtes de recherche.

Rechercher une variation de modèle de chaîne spécifique à partir d'un répertoire

Essayons d'interroger les occurrences instantanées du modèle de chaîne "restrict ”.

$ ack restrict

Les sorties ci-dessus pointent vers les numéros de ligne exacts dans les fichiers contenant la correspondance de modèle de chaîne. Le modèle d'écran généré résulte "restrict ” sont également des portions de mots comme restreint et restriction .

Rechercher un mot de modèle de chaîne spécifique à partir d'un répertoire

Si vous n'êtes pas intéressé par un résultat de recherche apparaissant comme une variante mais comme un mot complet, vous devrez implémenter vos modèles de chaîne de recherche différemment.

$ ack -w restrict 

Comme vous pouvez le voir, le modèle de chaîne de recherche recherche "restrict " comme un mot complet et non comme une partie d'une autre occurrence de mot.

Rechercher un modèle de chaîne spécifique à partir d'un type de fichier spécifique

Peut-être souhaitez-vous que vos recherches de modèles de chaîne ciblent un fichier spécifique comme un Python (--python) fichier, c (--c) fichier, vim (--vim) fichier ou tout autre type de fichier, votre requête de modèle de chaîne doit faire référence au type de fichier que vous recherchez.

$ ack -w --python restrict

La sortie de la commande ci-dessus pointe vers l'occurrence du mot "restrict ” sur la ligne 110 dans le fichier Python "src/clint.py ”.

Trouver l'occurrence totale d'une recherche de modèle de chaîne dans chaque fichier

Depuis le neovim cloné répertoire que nous utilisons a différents types de fichiers, cette commande compte l'occurrence d'une recherche de modèle de chaîne spécifique (restrict ) dans chacun de ces types de fichiers.

$ ack -c restrict  

Contrôle de la sortie d'une recherche de modèle de chaîne

La sortie de la commande ci-dessus inclut des fichiers avec zéro correspondance de modèle de chaîne pour l'entrée de chaîne spécifiée. Pour les éviter, la commande suivante imprime le nombre total de lignes de fichier qui correspondent à une entrée de modèle de chaîne spécifiée.

$ ack -ch restrict

Nous pouvons rendre la sortie ci-dessus plus petite et précise en demandant à la sortie de recherche de ne considérer que les mots complets et non les variantes de mots.

$ ack -ch -w restrict 

Nous pouvons également affiner le résultat de la commande ci-dessus pour ne considérer que les fichiers Python :

$ ack -ch -w --python restrict

Nous pouvons également utiliser le temps commande pour surveiller la vitesse de nos recherches :

$ time ack -ch restrict

En étant plus précis dans nos critères de modèle de recherche, nous obtiendrons une sortie plus rapide, comme démontré ci-dessous par rapport aux résultats ci-dessus.

$ time ack -ch -w --python restrict

Nous pourrions également générer les noms de fichiers réels correspondant à un modèle de recherche.

$ ack -f --python

Le modèle de recherche ack pourrait également cibler la convention de dénomination d'un fichier. N'importe quel C fichier avec le "log ” peut être associé à la commande suivante :

$ ack -g log --cc

Le ack L'outil de recherche est très flexible lorsqu'il est géré dans un répertoire de code source. Vous pouvez toujours adopter son utilisation pour les fichiers de votre environnement Linux. Il est extensible et rapide. Utilisez le man ack commande pour trouver plus d'options pour explorer cet outil rapide et léger.


Linux
  1. Comment utiliser la commande Linux Hexdump avec des exemples pratiques

  2. Comment utiliser les canaux et les canaux nommés sous Linux (avec exemples)

  3. Commande SCP sous Linux :comment l'utiliser, avec des exemples

  4. Comment utiliser la commande Rmmod sous Linux avec des exemples

  5. Comment utiliser la commande d'arrêt et de redémarrage de Linux avec des exemples

Comment installer et utiliser la commande locate sous Linux

Comment installer et utiliser la commande Ping sous Linux

Comment installer Dig sous Linux avec des exemples de ligne de commande

Comment installer et utiliser la commande fd sous Linux

Comment installer et utiliser la commande Ack dans le système Linux

Comment installer et utiliser la commande Ack sous Linux