GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare e utilizzare il comando Ack in Linux con esempi

Il sistema operativo Linux ti consente di cercare sia le strutture di directory che i file di directory per trovare corrispondenze di stringhe di testo specifiche. Uno strumento comune che ci aiuta a realizzare queste ricerche nelle directory è un grep (stampa globale di espressioni regolari ) comando. L'uso di espressioni regolari da parte di grep rende possibile avviare qualsiasi ricerca di pattern di stringhe verso un output testuale corrispondente sulla riga di comando.

[ Potrebbe piacerti anche:Ripgrep – Lo strumento di ricerca dalla riga di comando più veloce per Linux ]

Tuttavia, gli svantaggi di grep sono nelle sue caratteristiche di velocità e non flessibile. È qui che il riscontro lo strumento prende il sopravvento. Offre ricerche rapide che si estendono alle ricerche nella directory del codice sorgente, offrendo a un utente Linux la flessibilità di escludere determinati output dai risultati di ricerca.

Come installare Ack in Linux

Qualsiasi piattaforma supportata da Perl può ospitare ack strumento di ricerca. Lo installiamo facendo riferimento al suo pacchetto principale, 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]    

Ricerca nella directory Ack

Da ack è attribuito per essere orientato al codice sorgente, possiamo dimostrare la sua abilità nella ricerca di modelli di stringhe attraverso una directory del codice sorgente. Github è una risorsa rinomata per migliaia di directory di codice sorgente. Una directory del codice sorgente del progetto ideale per questa guida all'articolo è il progetto neovim.

Installa Git in 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]    

Clone Neovim Project

I diversi tipi di file in questo progetto di editor di testo neovim sono necessari per la nostra guida agli articoli.

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

Vai a neovim directory clonata per avviare il nostro tutorial.

$ cd neovim && ls

La directory di primo livello elencata espone i file markdown (.md) , file di testo (.txt) e un file YAML.

Implementazione di semplici comandi di ricerca Ack

Poiché la maggior parte delle query di ricerca dalla finestra del terminale Linux porta a uno scorrimento incontrollabile a causa di output infiniti, possiamo reindirizzare questi risultati di ricerca a "meno ” per le istanze dei risultati che superano le normali dimensioni della finestra del terminale.

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

Quanto sopra conferma il comando di configurazione gestisce in modo intelligente gli output dei risultati in eccesso.

Trovare il numero totale di file in una directory

Questo primo esempio di comando ci aiuta a distinguere l'efficienza logica di ack cerca da grep ricerca. Tramite grep , possiamo scoprire il numero totale di file sul neovim clonato progetto tramite il seguente comando:

$ find . | wc -l

Conferma conterà solo i file che ritiene logicamente rilevanti, quindi il suo output sarà diverso.

$ ack -f | wc -l

Quanto sopra 7% (2984-2772 ) i file ignorati vengono ignorati da tutti gli ack query di ricerca.

Trovare una specifica variazione dello schema di stringhe da una directory

Proviamo a interrogare le occorrenze istantanee dello schema di stringa "restrict ”.

$ ack restrict

Gli output precedenti puntano ai numeri di riga esatti nei file contenenti la corrispondenza del modello di stringa. Il pattern dello schermo emesso risulta "limita ” sono anche porzioni di parole come limitato e restrizione .

Trovare una parola con pattern di stringhe specifica da una directory

Se non sei interessato a un risultato di ricerca che si presenta come una variazione ma come una parola completa, dovrai implementare i tuoi modelli di stringa di ricerca in modo diverso.

$ ack -w restrict 

Come puoi vedere, il modello di stringa di ricerca cerca "limita ” come una parola completa e non parte di un'altra occorrenza di parola.

Trovare uno schema di stringhe specifico da un tipo di file specifico

Forse vuoi che le tue ricerche di schemi di stringa abbiano come target un file specifico come un Python (--python) file, c (--c) file, vim (--vim) file o qualsiasi altro tipo di file, la query del modello di stringa dovrebbe fare riferimento al tipo di file che cerchi.

$ ack -w --python restrict

L'output del comando precedente punta all'occorrenza della parola "limita ” in linea 110 all'interno del file Python “src/clint.py ”.

Trovare la ricorrenza totale di una ricerca di uno schema di stringhe in ogni file

Dal momento che il clonato neovim directory che stiamo utilizzando ha diversi tipi di file, questo comando conta l'occorrenza di una ricerca di uno specifico modello di stringa (limita ) in ciascuno di questi tipi di file.

$ ack -c restrict  

Controllo dell'output di una ricerca con pattern di stringhe

L'output del comando precedente include file con zero corrispondenze del modello di stringa per l'input di stringa specificato. Per evitarli, il comando seguente stampa le righe di file totali che corrispondono a un input di pattern di stringa specificato.

$ ack -ch restrict

Possiamo rendere l'output di cui sopra più piccolo e preciso richiedendo che l'output della ricerca consideri solo parole complete e non varianti di parole.

$ ack -ch -w restrict 

Possiamo anche restringere il risultato del comando sopra per considerare solo i file Python:

$ ack -ch -w --python restrict

Possiamo anche usare il tempo comando per monitorare la velocità delle nostre ricerche:

$ time ack -ch restrict

Essendo più specifici nei nostri criteri di pattern di ricerca, otterremo un output più rapido, come dimostrato di seguito rispetto ai risultati precedenti.

$ time ack -ch -w --python restrict

Potremmo anche generare i nomi dei file effettivi che corrispondono a un modello di ricerca.

$ ack -f --python

Il modello di ricerca ack potrebbe anche avere come target la convenzione di denominazione di un file. Qualsiasi C file con il "registro ” può essere abbinato al seguente comando:

$ ack -g log --cc

Il riscontro lo strumento di ricerca è molto flessibile se gestito in una directory di codice sorgente. Puoi ancora adottarne l'uso per i file all'interno del tuo ambiente Linux. È estensibile e veloce. Usa il man ack comando per trovare più opzioni per esplorare questo strumento veloce e leggero.


Linux
  1. Come utilizzare il comando Hexdump di Linux con esempi pratici

  2. Come utilizzare pipe e pipe con nome in Linux (con esempi)

  3. Comando SCP in Linux:come usarlo, con esempi

  4. Come utilizzare il comando Rmmod su Linux con esempi

  5. Come utilizzare il comando di arresto e riavvio di Linux con esempi

Come installare e utilizzare il comando locate in Linux

Come installare e utilizzare il comando Ping in Linux

Come installare Dig in Linux con esempi di riga di comando

Come installare e utilizzare il comando fd in Linux

Come installare e utilizzare il comando Ack nel sistema Linux

Come installare e utilizzare il comando Ack in Linux