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.