Recherche de site Web

Comment modifier des fichiers texte à l’aide de Nano, Vim et grep (partie 4)


Chaque administrateur système doit gérer des fichiers texte dans le cadre de ses responsabilités quotidiennes, qui incluent l’édition de fichiers existants (très probablement des fichiers de configuration) ou la création de nouveaux fichiers.

Il a été dit que si vous voulez commencer une guerre sainte dans le monde Linux, vous pouvez demander aux administrateurs système quel est leur éditeur de texte préféré et pourquoi.

Nous n’allons pas le faire dans cet article, mais nous allons présenter quelques conseils qui seront utiles pour utiliser deux des éditeurs de texte les plus utilisés : nano (en raison de sa simplicité et de sa facilité d’utilisation, en particulier pour les nouveaux utilisateurs), et vim/vi (en raison des nombreuses fonctionnalités qui le convertissent en plus d’un simple éditeur).

Je suis sûr que vous pouvez trouver beaucoup d’autres raisons d’utiliser l’un ou l’autre, ou peut-être d’autres éditeurs de texte tels que emacs ou pico. C’est à vous de décider.

Édition de fichiers avec Nano Editor

Pour lancer nano, vous pouvez soit simplement taper nano à l’invite de commande, éventuellement suivi d’un nom de fichier (dans ce cas, si le fichier existe, il sera ouvert en mode édition).

Si le fichier n’existe pas, ou si nous omettons le nom du fichier, nano sera également ouvert en mode édition mais présentera un écran vide pour que nous commencions à taper :

nano test

Comme vous pouvez le voir sur l’image précédente, nano affiche en bas de l’écran plusieurs fonctions qui sont disponibles via les raccourcis indiqués (^, alias caret, indique la touche Ctrl).

Pour n’en nommer que quelques-uns :

  • Ctrl + G : affiche le menu d’aide avec une liste complète des fonctions et des descriptions.
  • Ctrl + X : quitte le fichier courant. Si les modifications n’ont pas été enregistrées, elles sont ignorées.
  • Ctrl + R : permet de choisir un fichier pour insérer son contenu dans le fichier présent en spécifiant un chemin d’accès complet.

  • Ctrl + O : enregistre les modifications apportées à un fichier. Il vous permettra d’enregistrer le fichier avec le même nom ou un nom différent. Appuyez ensuite sur Entrée pour confirmer.

  • Ctrl + X : quitte le fichier courant. Si les modifications n’ont pas été enregistrées, elles sont ignorées.
  • Ctrl + R : permet de choisir un fichier pour insérer son contenu dans le fichier présent en spécifiant un chemin d’accès complet.

insérera le contenu de /etc/passwd dans le fichier courant.

  • Ctrl + K : coupe la ligne courante.
  • Ctrl + U : coller.
  • Ctrl + C : annule l’opération en cours et vous place sur l’écran précédent.

Pour naviguer facilement dans le fichier ouvert, nano offre les fonctionnalités suivantes :

  • Ctrl + F et Ctrl + B déplacent le curseur vers l’avant ou vers l’arrière, tandis que Ctrl + P et Ctrl + N le déplacent vers le haut ou vers le bas d’une ligne à la fois, respectivement, tout comme les touches fléchées.
  • Ctrl + espace et Alt + espace déplacent le curseur vers l’avant et vers l’arrière d’un mot à la fois.

Finalement

  • Ctrl + _ (trait de soulignement) puis en entrant X,Y vous amènera précisément à la ligne X, colonne Y, si vous souhaitez placer le curseur à un endroit spécifique du document.

L’exemple ci-dessus vous mènera à la ligne 15, colonne 14 du document actuel.

Si vous vous souvenez de vos débuts sous Linux, surtout si vous venez de Windows, vous conviendrez probablement que commencer par nano est la meilleure façon de procéder pour un nouvel utilisateur.

Modification de fichiers avec l’éditeur Vim

Vim est une version améliorée de vi, un célèbre éditeur de texte sous Linux qui est disponible sur tous les systèmes *nix conformes à POSIX, tels que RHEL. Si vous en avez l’occasion et que vous pouvez installer vim, allez-y ; Si ce n’est pas le cas, la plupart (sinon la totalité) des conseils donnés dans cet article devraient également fonctionner.

L’une des caractéristiques distinctives de Vim est les différents modes de fonctionnement :

Mode de commande Vi

Le mode Commande vous permettra de parcourir le fichier et d’entrer des commandes, qui sont des combinaisons brèves et sensibles à la casse d’une ou plusieurs lettres.

Si vous devez répéter l’un d’entre eux un certain nombre de fois, vous pouvez le faire précéder d’un nombre (il n’y a que quelques exceptions à cette règle).

Par exemple, yy (ou Y, abréviation de yank) copie la ligne actuelle entière, tandis que 4yy (ou 4Y) copie la ligne actuelle entière ainsi que les trois lignes suivantes (4 lignes au total).

Mode Ex Vi

En mode ex, vous pouvez manipuler des fichiers (y compris l’enregistrement d’un fichier actuel et l’exécution de programmes ou de commandes externes). Pour entrer en mode ex, nous devons taper deux points (:) à partir du mode commande (ou en d’autres termes, Esc + :), directement suivi du nom de la commande ex-mode que vous souhaitez utiliser.

Mode d’insertion vi

En mode insertion, auquel on accède en tapant la lettre i, nous entrons simplement du texte. La plupart des frappes au clavier font apparaître du texte à l’écran.

Nous pouvons toujours entrer en mode commande (quel que soit le mode sur lequel nous travaillons) en appuyant sur la touche Échap.

Voyons comment nous pouvons effectuer les mêmes opérations que nous avons décrites pour nano dans la section précédente, mais maintenant avec vim. N’oubliez pas d’appuyer sur la touche Entrée pour confirmer la commande vim !

Pour accéder au manuel complet de Vim à partir de la ligne de commande, tapez :help en mode commande, puis appuyez sur Entrée :

La section supérieure présente une liste d’index des matières, avec des sections définies dédiées à des sujets spécifiques sur vim. Pour accéder à une section, placez le curseur dessus et appuyez sur Ctrl + ] (crochet fermant). Notez que la section inférieure affiche le fichier actuel.

1. Pour enregistrer les modifications apportées à un fichier, exécutez l’une des commandes suivantes à partir du mode commande et cela fera l’affaire :

:wq!
:x!
ZZ (yes, double Z without the colon at the beginning)

2. Pour quitter l’annulation des modifications, utilisez :q !. Cette commande vous permettra également de quitter le menu d’aide décrit ci-dessus, et de revenir au fichier courant en mode commande.

3. Coupez N lignes : tapez Ndd en mode commande.

4. Copiez le nombre M de lignes : tapez Myy en mode commande.

5. Collez les lignes précédemment coupées ou copiées : appuyez sur la touche P en mode commande.

6. Pour insérer le contenu d’un autre fichier dans le fichier actuel :

:r filename

Par exemple, pour insérer le contenu de /etc/fstab, faites :

7. Pour insérer la sortie d’une commande dans le document courant :

:r! command

Par exemple, insérez la date et l’heure dans la ligne située sous la position actuelle du curseur :

Dans un autre article pour lequel j’ai écrit, (partie 2 de la série LFCS), j’ai expliqué plus en détail les raccourcis clavier et les fonctions disponibles dans vim. Vous voudrez peut-être vous référer à ce tutoriel pour d’autres exemples d’utilisation de ce puissant éditeur de texte.

Analyse de texte à l’aide de grep et d’expressions régulières

Vous avez maintenant appris à créer et à modifier des fichiers à l’aide de nano ou vim. Supposons que vous deveniez un ninja de l’éditeur de texte, pour ainsi dire – et maintenant ? Entre autres choses, vous aurez également besoin de savoir comment rechercher des expressions régulières dans le texte.

Une expression régulière (également connue sous le nom de « regex » ou « regexp ») est un moyen d’identifier une chaîne de texte ou un motif afin qu’un programme puisse comparer le motif à des chaînes de texte arbitraires.

Bien que l’utilisation d’expressions régulières avec la commande grep mériterait un article entier à elle seule, passons en revue les bases ici :

1. L’expression régulière la plus simple est une chaîne alphanumérique (c’est-à-dire le mot « svm ») ou deux (lorsque deux sont présents, vous pouvez utiliser le | (OR) :

grep -Ei 'svm|vmx' /proc/cpuinfo

La présence de l’une de ces deux chaînes indique que votre processeur prend en charge la virtualisation :

2. Un deuxième type d’expression régulière est une liste de plages, entre crochets.

Par exemple, c[aeiou]t correspond aux chaînes cat, cet, cit, cot et cut, tandis que [a-z] et [0-9] correspondent à n’importe quelle lettre minuscule ou chiffre décimal, respectivement.

Si vous souhaitez répéter l’expression régulière X un certain nombre de fois, tapez {X} immédiatement après l’expression rationnelle.

Par exemple, extrayons les UUID des périphériques de stockage de /etc/fstab :

grep -Ei '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' -o /etc/fstab

La première expression entre parenthèses [0-9a-f] est utilisée pour désigner les caractères hexadécimaux minuscules, et {8} est un quantificateur qui indique le nombre de fois que la correspondance précédente doit être répétée (la première séquence de caractères d’un UUID est une chaîne hexadécimale de 8 caractères).

Les parenthèses, le quantificateur {4} et le trait d’union indiquent que la séquence suivante est une chaîne hexadécimale de 4 caractères et le quantificateur qui suit ({3}) indique que l’expression doit être répétée 3 fois.

Enfin, la dernière séquence de chaîne hexadécimale de 12 caractères dans l’UUID est récupérée avec [0-9a-f]{12}, et l’option -o n’affiche que les parties correspondantes (non vides) de la ligne correspondante dans /etc/fstab.

3. Classes de caractères POSIX.

Classe de personnageallumettes...
 [[ :alnum :]] N’importe quel caractère alphanumérique [a-zA-Z0-9]
 [[ :alpha :]] Tout caractère alphabétique [a-zA-Z]
 [[ :blank :]] Espaces ou tabulations
 [[ :cntrl :]] Tous les caractères de contrôle (ASCII 0 à 32)
 [[:d igit :]] N’importe quel chiffre numérique [0-9]
 [[ :graph :]] Tous les caractères visibles
 [[ :inférieur :]] N’importe quel caractère minuscule [a-z]
 [[:p rint :]] Tous les caractères non contrôlés
 [[ :espace :]] Tout espace blanc
 [[:p unct :]] Tous les signes de ponctuation
 [[ :supérieur :]] N’importe quel caractère majuscule [A-Z]
 [[ :xdigit :]] N’importe quel chiffre hexadécimal [0-9a-fA-F]
 [ :mot :] Toutes les lettres, chiffres et traits de soulignement [a-zA-Z0-9_]

Par exemple, nous pourrions être intéressés de savoir quels sont les UID et GID utilisés (reportez-vous à la partie 3 de cette série pour vous rafraîchir la mémoire) pour les utilisateurs réels qui ont été ajoutés à notre système. Ainsi, nous allons rechercher des séquences de 4 chiffres dans /etc/passwd :

grep -Ei [[:digit:]]{4} /etc/passwd

L’exemple ci-dessus n’est peut-être pas le meilleur cas pour l’utilisation d’expressions régulières dans le monde réel, mais il illustre clairement comment utiliser les classes de caractères POSIX pour analyser du texte avec grep.

Conclusion

Dans cet article, nous avons fourni quelques conseils pour tirer le meilleur parti de nano et vim, deux éditeurs de texte pour les utilisateurs en ligne de commande.

Les deux outils sont soutenus par une documentation complète, que vous pouvez consulter sur leurs sites officiels respectifs et en utilisant les suggestions données dans la partie 2 de cette série.

Pour une préparation complète à l’examen RHCSA, nous avons créé un ebook complet intitulé « Guide d’étude de l’examen RHCSA », couvrant tous les objectifs avec des exemples pratiques.

Articles connexes: