I server basati sul sistema operativo Linux di solito non hanno un'interfaccia grafica per motivi di sicurezza. In questo caso, diventa molto importante sapere e saper manipolare il terminale usando i comandi Linux.
Un'operazione molto utile che possiamo eseguire con il terminale è la ricerca all'interno di un file di testo. Soprattutto se lavoriamo con file di configurazione di servizi come NTP.
In questo post ti insegneremo come usare il comando grep in Linux (Unix) e rafforzeremo l'apprendimento con un esempio utile per il tuo flusso di lavoro quotidiano.
Come utilizzare il comando grep?
Il comando grep appartenente alla famiglia Unix è uno degli strumenti più versatili e utili disponibili. Cerca in un file di testo un modello che definiamo. In altre parole, con grep puoi cercare una parola o uno schema e la riga o le righe che la contengono verranno stampate.
A prima vista, può essere un comando di scarsa utilità, tuttavia, gli amministratori di sistema che gestiscono molti servizi con vari file di configurazione, lo usano per interrogare o cercare righe specifiche all'interno di quei file.
Innanzitutto, connettiti al VPS tramite SSH. Ecco un articolo che mostra come farlo utilizzando PuTTY SSH.
ssh your-user@your-server
Se stai utilizzando Linux sul tuo computer, apri un terminale.
La sintassi del comando grep durante la ricerca di un singolo file è simile alla seguente:
grep [options] pattern [FILE]
- grep – l'istruzione di comando
- [opzioni] – modificatori al comando
- modello – la query di ricerca da trovare
- [FILE] – il file in cui stai eseguendo la ricerca
Puoi vedere la documentazione e le spiegazioni di varie opzioni eseguendo questo comando nella riga di comando:
grep –help
Come puoi vedere ci sono molte possibilità che il comando ci offre. Tuttavia, le opzioni più importanti e comunemente utilizzate sono:
- -i – la ricerca non farà distinzione tra maiuscole e minuscole. Cioè, se vuoi cercare la parola "auto" sarà la stessa di "CAR"
- -c – mostrerà solo il numero di righe che corrispondono al pattern cercato
- -r – abilita la ricerca ricorsiva nella directory corrente
- -n – cerca le righe e trova la ricezione solo dei numeri abbinati delle righe di testo
- -v – con questa opzione, ci vengono mostrate le linee che non corrispondono allo schema che abbiamo cercato
Alcuni utili esempi di grep
Diamo un'occhiata ad alcuni esempi pratici del comando grep.
Trovare una parola in un file di testo
Per cercare una parola in un file di testo, digita il comando:
grep query file
- interrogazione – la parola che stai cercando
- file – il file in cui stai cercando la query
Nel nostro caso, stiamo cercando la parola comando in un file chiamato grep :
grep command grep
L'output evidenzia le righe che corrispondono alla query in questo modo:
Trova una parola ignorando le lettere maiuscole
Per fare ciò, è necessario aggiungere l'opzione -i .
grep -i query file
Ecco fatto, così semplice!
Conteggio parole query target
Usando il comando grep puoi scoprire quante volte una parola viene utilizzata nel file di testo. Basta aggiungere l'opzione -c .
grep -c query file
Ricerca di più parole chiave
Finora abbiamo indicato esempi in cui cerchiamo una parola. Grep supporta più query in un unico comando. Il comando sarebbe simile a questo:
grep query1 file | grep query2 file
Il comando funziona in modo molto semplice. Innanzitutto, cerchiamo Query1 e quindi passiamo attraverso la pipe a un secondo comando grep per la seconda parola:Query2 .
Trovare una parola in un set di file
È anche possibile cercare un insieme di file in un unico comando:
grep -l word_to_search ./*
Nel terminale, nell'output verranno visualizzati i file che contengono la parola cercata.
Conclusione
L'uso del comando grep può rendere il lavoro molto più semplice se lavoriamo con molti file di testo. Ecco perché grep è considerato un comando molto versatile con molte possibilità di utilizzo.
In questo post, hai appreso quali sono le funzioni più comuni del comando Linux grep. Ti consigliamo invece di consultare la documentazione ufficiale per ampliarne la conoscenza! Buon sviluppo.