Vous recherchez ce seul fichier, celui qui contient toutes les informations importantes pour votre prochaine réunion. Recherchez-vous manuellement tous vos fichiers ? Cela prendra du temps. Au lieu de cela, nous utilisons un peu de magie en ligne de commande Linux. Grép est une commande de correspondance de modèles que nous pouvons utiliser pour rechercher dans des fichiers et des répertoires un texte spécifique. Grép est couramment utilisé avec la sortie d’une commande, canalisée pour être l’entrée de la commande grep. Par exemple, nous pouvons rechercher dans un fichier une chaîne de texte spécifique à l’aide de la moins commande, et redirigez la sortie vers grep.
Dans ce guide, nous utiliserons le grep commande et arguments couramment ajoutés pour rechercher des chaînes de données spécifiques dans les fichiers. Nous commencerons par configurer un petit répertoire de fichiers de test, car la recherche d’un système de fichiers entier peut prendre un certain temps et créer beaucoup de résultats.
Toutes les commandes de ce tutoriel fonctionneront sur la plupart des machines Linux. Nous avons utilisé une installation d’Ubuntu 20.04, mais vous pouvez exécuter ce guide sur un Tarte aux framboises. Toutes les procédures sont effectuées via le terminal. Vous pouvez ouvrir une fenêtre de terminal sur la plupart des machines Linux en appuyant sur ctrl, alt et t.
Configurer un environnement de test pour grep
Comme grep peut être utilisé de différentes manières, nous devons créer un répertoire et du contenu qui nous permettent d’explorer ses utilisations. Dans cette section, nous allons créer cet environnement de test.
1. Mettre en place un test répertoire et changez de répertoire pour vous y trouver.
mkdir test
cd test
2.Créez 4 fichiers, test1, test2, test3 et test4.
touch test1 test2 test3 test4
ls
3. Modifier test1 en utilisant nano pour contenir les noms suivants sur des lignes séparées. Notez que dans test1 aucun des noms ne contient de majuscules. Après avoir édité dans nano presse contrôle x pour sortir, appuyez sur y pour confirmer la sauvegarde puis appuyez sur Entrer.
nano test1
4. Ajoutez le texte suivant au fichier. Appuyez ensuite sur CTRL + X, puis Y et Entrée pour enregistrer et quitter.
ali
mohamed
claire
aled
steve
5. Modifier test2 en utilisant nano. Dans test2 nous ajouterons une seule ligne de test plus longue contenant le nom Steve.
nano test2
6. Ajoutez le texte suivant au fichier. Appuyez ensuite sur CTRL + X, puis Y et Entrée pour enregistrer et quitter.
this is a long line of test that contains the name steve
7. Modifier test3 dans nano. Semblable à test1 nous ajouterons une liste de noms sur des lignes séparées mais cette liste inclura le nom Steven.
nano test3
8. Ajoutez le texte suivant au fichier. Appuyez ensuite sur CTRL + X, puis Y et Entrée pour enregistrer et quitter.
alice
geoff
murbarak
mohamed
steven
9. Enfin modifier test4 pour compléter notre environnement de test. Notez que dans ce fichier, nous utilisons une majuscule au début de Steve.
nano test4
dix. Ajoutez le texte suivant au fichier. Appuyez ensuite sur CTRL + X, puis Y et Entrée pour enregistrer et quitter.
Steve ?
Recherches simples avec grep
La recherche d’un fichier pour une chaîne spécifique est extrêmement utile. Par exemple lors du débogage d’une erreur dans un fichier journal. Commençons à utiliser grep dans sa forme la plus élémentaire.
Le grep la syntaxe de la commande est simplement grep suivi de tous les arguments, puis de la chaîne que nous souhaitons rechercher et enfin de l’emplacement dans lequel rechercher.
1. Recherche test1 pour la ficelle Steve en utilisant grep. Les critères de recherche sont sensibles à la casse, assurez-vous donc que vous effectuez la recherche correctement. Remarquez que le mot Steve est simplement renvoyé en rouge pour indiquer qu’il a été trouvé dans le fichier.
grep steve test1
2. Rechercher la même chaîne dans plusieurs fichiers. Nous pouvons simplement ajouter une liste de fichiers au grep commande pour qu’il recherche. Notez que, avec plusieurs zones de recherche, les résultats renvoyés sont étiquetés avec chaque nom de fichier à partir duquel le résultat est trouvé. Remarquez également que grep renvoie la ligne complète de texte contenant la chaîne recherchée.
grep steve test1 test2
3. Rechercher tous les fichiers dans le répertoire. L’ajout d’un astérisque force grep pour rechercher tous les fichiers dans le répertoire courant. Notez que les résultats renvoyés incluent le résultat de test3 où la chaîne de recherche Steve est contenu dans Steven. Notez également que ces résultats ne contiennent pas le résultat de test4 comme dans sa forme de base le grep la commande est sensible à la casse.
grep steve *
4. Ajouter l’argument -je faire grep insensible à la casse. Cela renverra les résultats des quatre fichiers de test du répertoire.
grep -i steve *
Sortie de tuyauterie vers grep
Le cas d’utilisation le plus fort pour grep est lorsqu’il est associé à une autre commande. À l’aide de canaux, nous envoyons la sortie d’une commande à grep et utilisez-le pour rechercher des modèles / mots-clés.
1. Ouvrez une nouvelle fenêtre de terminal.
2. Utiliser lsusb pour répertorier tous les périphériques USB connectés à votre machine. Cela répertoriera également les périphériques USB internes, tels que les webcams d’ordinateurs portables. La sortie sera différente selon votre machine, mais vous devriez être confronté à un mur de texte.
lsusb
3. Utilisez le lsusb commande à nouveau, mais cette fois, utilisez grep pour rechercher Linux. En ajoutant un tuyau entre lsusb et grep la sortie de la première commande est utilisée comme entrée de la seconde.
lsusb | grep Linux
Utilisation de dmesg et grep pour inspecter le Kernel Ring Buffer
Essayons quelque chose d’un peu plus complexe. Cette fois, nous utiliserons dmesg et grep pour inspecter le Kernel Ring Buffer (essentiellement le fichier journal du noyau). Nous allons rechercher un mot-clé dans dmesg« secureboot » et confirmez qu’il est activé.
1. Ouvrez un terminal et exécutez la commande dmesg en tant que sudo. Cela imprimera un mur de sortie de la console sur le terminal, quelque chose que nous pouvons rechercher en utilisant grep.
sudo dmesg
2. Utilisez le grep commande pour rechercher « secureboot » dans le dmesg production. Utilisez le -je argument pour désactiver la sensibilité à la casse afin que nous saisissions chaque occurrence de secureboot. La sortie affichera les lignes sur lesquelles secureboot apparaît dans dmesg.
sudo dmesg | less | grep -i secureboot
Autres utilisations de grep
Comme de nombreuses commandes Linux, il existe de nombreux ajouts et variantes utiles pour le grep commande. Regardons quelques exemples intéressants.
1. Effectuez une recherche inversée à l’aide de la -v argument. Cela renverra une liste de toutes les lignes des fichiers d’environnement de test qui ne contiennent pas la chaîne de recherche Steve. Cet argument est utile pour ignorer les occurrences de chaînes dans les journaux ou les fichiers lors du débogage d’un problème. Notez qu’à nouveau les résultats sont sensibles à la casse et qu’ils incluent donc la ligne contenant la majuscule Steve ? depuis test4.
grep -v steve *
2. Combinez les -v et -je arguments pour exclure toutes les chaînes correspondantes, quelle que soit la casse.
grep -vi steve *
3. Recherche une chaîne contenant du texte ou des espaces non alphanumériques. Si vous incluez une chaîne de recherche avec un espace ou un autre texte non alphanumérique, cela peut casser le grep syntaxe de commande, pour créer une chaîne de recherche les contenant, vous devez utiliser des guillemets pour contenir la chaîne. Dans cette étape, nous recherchons « Steve ? » qui est contenu dans le test4 dossier.
grep “Steve ?” *
Recherche de sous-répertoires avec grep
Comme de nombreuses commandes Linux, il existe de nombreux ajouts et variantes utiles pour le grep commande. Regardons quelques exemples intéressants.
1. Effectuez une recherche inversée à l’aide de la -v argument. Cela renverra une liste de toutes les lignes des fichiers d’environnement de test qui ne contiennent pas la chaîne de recherche Steve. Cet argument est utile pour ignorer les occurrences de chaînes dans les journaux ou les fichiers lors du débogage d’un problème. Notez qu’à nouveau les résultats sont sensibles à la casse et qu’ils incluent donc la ligne contenant la majuscule Steve ? depuis test4.
grep -v steve *
2. Combinez les -v et -je arguments pour exclure toutes les chaînes correspondantes, quelle que soit la casse.
grep -vi steve *
3. Recherche une chaîne contenant du texte ou des espaces non alphanumériques. Si vous incluez une chaîne de recherche avec un espace ou un autre texte non alphanumérique, cela peut casser le grep syntaxe de commande, pour créer une chaîne de recherche les contenant, vous devez utiliser des guillemets pour contenir la chaîne. Dans cette étape, nous recherchons « Steve ? » qui est contenu dans le test4 dossier.
grep “Steve ?” *
Recherche de sous-répertoires avec grep
Souvent, nous voudrons rechercher une chaîne dans les fichiers contenus dans les sous-répertoires. Nous pouvons le faire simplement en ajoutant le -r argument récursif au grep commande.
1. Créez un sous-répertoire contenant un fichier de test dans le test annuaire.
mkdir sub_directory
cd sub_directory
touch test5
2. Ouvrez test5 à l’aide de l’éditeur de texte nano et ajoutez le texte « steve dans un sous-répertoire » au fichier. Appuyez ensuite sur CTRL + X, puis Y et Entrée pour enregistrer et quitter.
nano test5.
3. Retour à la test annuaire et effectuer une recherche en ajoutant -r option. Notez que le résultat pour essai5 inclut l’emplacement du fichier répertorié dans la sortie.
cd ..
grep -r steve *
Avec grep sous Linux, vous disposez d’un bon ensemble d’approches pour rechercher le contenu des fichiers sur votre système. Comme pour de nombreuses commandes Linux, il peut être intéressant de consulter le menu d’aide pour voir tous les arguments variés que vous pouvez ajouter à grep. Cours grep –h dans un émulateur de terminal pour vérifier toutes les options.
SUITE: Comment vérifier l’utilisation du disque sous Linux
SUITE: Comment tuer un processus sous Linux
SUITE: Comment trouver des fichiers sous Linux