Outils pour utilisateurs

Outils du site


cours:informatique:sysadmin:administrer_un_systeme_linux:230_edition_suppression_fichiers

Notes et transcriptions du cours “Administrez un système Linux” disponible sur la plateforme Openclassrooms.

Editez et supprimez des fichiers

Certains événements entrent dans l'histoire (de l'informatique) Le conflit des utilisateurs des deux principaux éditeurs de texte en mode terminal (vi et emacs) des systèmes Unix en fait partie. Preuve en est, cet article sur Wikipédia !

Ce pseudo-conflit (qui a parfois été virulent) s’est un peu calmé dans le milieu des années 80, mais ses réminiscences sont encore nombreuses, et je croise régulièrement des collègues, des clients, ou des partenaires qui n'hésitent pas à faire une petite remarque lorsque j'utilise l'un ou l'autre…

C'est comme ça, je pense, que l'on peut comparer cette histoire avec celle de nos relations avec nos voisins anglais. La petite bataille vi/emacs n'est jamais vraiment terminée.

Quoi qu'il en soit, je vais vous présenter ces deux outils indispensables pour l'administrateur Linux, et comme je suis plutôt un utilisateur de vi, je vais commencer par celui-là (gniarc !).

Je vous proposerai aussi un troisième choix : nano. Il a l'avantage d'être assez simple d'utilisation, particulièrement pour les administrateurs qui viennent du monde Windows.

Je profiterai également de ce chapitre pour évoquer la notion d'inode qui caractérise les fichiers et répertoires sous Linux. Et je vous expliquerai pour finir comment copier, déplacer et supprimer ces objets avec les commandes cp, mv et rm.

Utilisez vi, l’éditeur phare de Linux

vi est un éditeur de texte en mode terminal pour les systèmes Unix, créé par Bill Joy en 1976. Ce programme fut porté à l'origine directement dans la première version de la branche BSD des Unix en 1978.

De ce fait, vi est installé par défaut avec quasiment toutes les distributions Linux à ce jour, mais vous le retrouvez aussi sur tous les Unix (HP, Solaris, AIX, etc.). Si vous n'avez aucun outil sur votre Unix/Linux, vous avez toujours vi !

Alors, certes, ce n'est pas l'éditeur de texte le plus ergonomique qui soit, je veux bien le reconnaître. À chaque séance d'apprentissage de ce logiciel avec des personnes qui ne le connaissent pas du tout, je constate qu’ils ont besoin d’un temps nécessaire, incompressible, avant de se sentir plus à l’aise avec son fonctionnement.

Par contre, je constate aussi presque systématiquement une adoption irrévocable, passée cette petite période d'adaptation !

Alors, attachez vos ceintures, prenez patience et lancez-vous dans l'aventure vi, vous ne le regretterez pas !

Je vous propose de démarrer avec l’introduction dans deux modes de fonctionnement de vi :

  • le mode commande ;
  • et le mode saisie.

Puis je vous montre comment effectuer les opérations de base sur les fichiers (éditer, copier/coller, chercher/remplacer) et quelques commandes utiles au passage ! On y va ?

:TODO_DOCUPDATE:

Je vous l’avais dit, ce n’est pas forcément facile d’accès. Mais une fois en main, vi ne vous décevra jamais !

Dans cette vidéo, nous avons vu de nombreux raccourcis que l'on peut utiliser depuis le mode commande. Voici les principaux à retenir :

Touche Effet
I Insertion de texte à partir du curseur.
A Insertion de texte après le curseur.
X Suppression du caractère sous le curseur.
C W Suppression du mot sous le curseur + Insertion.
D D Suppression de la ligne sous le curseur.
N D D Suppression de N lignes à partir de celle sous le curseur.
YY Copie de la ligne sous le curseur.
N YY Copie de N lignes à partir de celle sous le curseur.
P Colle le buffer sous la position actuelle du curseur.
/ Recherche un pattern dans le fichier.
: Saisir une commande vi.
:set number Affiche les numéros de ligne
:s%/patternA/patternB/g Cherche et remplace patternA par patternB dans le fichier.
:N Déplacement du curseur à la ligne N.
G Déplacement du curseur en fin de fichier.

Allez, un dernier petit conseil : Dans les premiers temps, gardez avec vous une petite fiche référentielle des commandes de vi, telles que l’on peut en trouver sur le Web (rechercher les “Cheat Sheet”).

Utilisez emacs, l’autre éditeur phare de Linux

Pour être tout à fait honnête, vi est mon éditeur de prédilection lorsqu'il s'agit de :

  • Gérer des fichiers de configuration ;
  • Éditer de simples fichiers de script.

Mais passé un seuil de volume de lignes à écrire, je passe sous emacs (même si ce seuil augmente avec le temps…).

En effet, emacs est bien plus qu'un éditeur de texte en mode terminal.

Ce logiciel a été écrit à l'origine par Richard Stallman en 1976, puis repris par lui-même au début des années 80 en version C, avec notamment une gestion d'extensions très intéressante développée avec le langage lisp.

L'intégration du langage interprété lisp offre à emacs une modularité et une flexibilité importante, permettant à son utilisateur d'ajouter ou de configurer des fonctionnalités à la volée, sans avoir à recompiler le programme.

emacs n'est pas souvent installé par défaut sur les distributions Linux, et sur des installations minimales, le volume de packages nécessaires à son installation n'est pas anodin.

Le fonctionnement d’emacs s'appuie également sur un jeu de commandes, mais les combinaisons de touches sont toujours associées aux touches CTRL et ALT du clavier, permettant ainsi d'utiliser les touches classiques alphanumériques pour à la fois saisir du texte et déclencher des commandes.

CTRL CTRL C : Enregistre les éventuelles modifications et quitte le programme.

emacs fonctionne également avec un “buffer” mémoire ; ainsi, quitter le programme sans enregistrer les modifications sur un fichier vide ne créera pas le fichier dans l'arborescence.

Concernant les fonctions d'édition, emacs se comporte comme un éditeur de texte classique, vous pouvez insérer des caractères à volonté simplement en tapant les touches correspondantes sur le clavier. Vous pouvez aussi utiliser les touches SUPPR ou DEL pour effacer du texte.

Pour déplacer le curseur, il faut utiliser les touches CRTL ou ALT associées aux touches minuscules suivantes :

Touche
CTRL N (n pour “next”) déplace le curseur sur la ligne suivante.
CTRL P (p pour “previous”) déplace le curseur sur la ligne précédente.
CTRL F (f pour “forward”) déplace le curseur sur le caractère suivant.
CTRL B (b pour “backward”) déplace le curseur sur le caractère précédent.
CTRL A Déplace le curseur au début d'une ligne.
CTRL E (e pour “end”) déplace le curseur à la fin d'une ligne.
ALT < Déplace le curseur au début du fichier.
ALT > Déplace le curseur à la fin du fichier.
DEL Supprime le mot avant le curseur.
CTRL D Efface le caractère après le curseur.
ALT DEL Supprime le mot avant le curseur.
ALT D Supprime le mot après le curseur.
CTRL K Coupe le reste de la ligne après le curseur.
CTRL Y Colle le reste de la ligne ci-après.

Voilà, nous avons fait le tour des fonctionnalités équivalentes à vi pour emacs.

Bien entendu, ce petit résumé présente simplement les bases permettant de manipuler facilement les fichiers sous Linux.

emacs est un outil permettant bien plus que ces fonctions de base, je connais des développeurs qui s'en servent comme IDE !

De la même manière, il est possible de trouver assez simplement quelques feuilles de référence sur le Web pour emacs :

Un peu moins lisibles mais bien structurées :

Utilisez nano, l’éditeur de transition avec le monde Windows

Si vous n'avez pas l'habitude d'utiliser les deux mastodontes ci-dessus, il est toujours possible de vous rapatrier vers nano, un éditeur de texte en mode terminal bien sympathique !

Le nom nano semble provenir de deux origines distinctes. Il fait bien entendu référence dans un premier temps à l'unité nano pour signifier que le logiciel est mille fois plus petit que son prédécesseur historique qui était nommé pico. Mais, vous trouverez aussi quelques références à l'acronyme récursif (méthode appréciée des concepteurs de programme sous Linux) suivant : Nano is ANOther editor.

Ce petit programme très léger plaît particulièrement aux administrateurs venant du monde Windows, car il propose un mode de fonctionnement similaire à ses collègues Notepad, Ultraedit, ou autre bloc-notes.

En effet :

  • Les fonctionnalités d'édition sont classiques ;
  • Pas de distinction entre mode commande et mode saisie ;
  • à l'ouverture de nano, vous êtes prêt à saisir ;
  • et les touches de direction fonctionnent !

Copiez, déplacez et supprimez des fichiers sous Linux

Vous voilà équipé pour éditer un fichier sous Linux. Il est temps de se pencher sur la manipulation des fichiers, c'est-à-dire :

  • La copie ;
  • Le déplacement ;
  • La suppression.

Pour bien comprendre ces manipulations et les commandes associées, une petite introduction sur le concept de fichier sous Linux me paraît nécessaire.

ATTENTION, c’est LE chapitre du cours à bien comprendre.

Linux est construit autour de la philosophie de fichier, si vous comprenez cette philosophie, vous aurez tout compris à Linux ! (Enfin, presque…)

Sans entrer trop dans le détail, un fichier est une structure du langage C définie directement au niveau du code noyau de Linux. Oui ! Ne soyez pas choqué, ce lien pointe vers le code C officiel du noyau Linux !

Cette structure est nommée inode. Elle peut se représenter par une liste de champs illustrée généralement sous la forme d’un tableau, que l'on va étudier par dézooms successifs.

Regardons de près l'inode, le fichier donc. On y voit ses informations (sa taille, son propriétaire et groupe propriétaire, ses permissions, la date de ses derniers accès (lecture, modification), etc.) :

Dans ce graphique, on peut voir les métadonnées de l'inode et donc du fichier. Il y a 12 blocs de données directes et 3 adresses de blocs indirects.

L' inode contient :

  • Les adresses de blocs directes. Ces 12 premiers champs contiennent les adresses directes des données du fichier sur les périphériques de type blocs les contenant (disque dur, périphériques externes type clé USB, etc.).
  • Les adresses de blocs indirects. Ces champs contiennent des pointeurs vers d'autres inodes dont la totalité des champs (128 champs) est adressée pour des blocs de données.

L’adresse contenue dans la ligne 13 renvoie à un nouvel inode ou bloc de pointeurs. Ce nouvel inode contient, lui, 128 lignes. Chacune des adresses contenues dans ces lignes renvoient vers un bloc de données. On dit que ces blocs de donnés sont indirects :

L’adresse contenue dans la ligne 14 renvoie à un nouvel inode ou bloc de pointeurs de 128 lignes. Chacune des adresses contenues dans ces lignes renvoient vers un nouvel inode contenant à nouveau 128 lignes (oui c’est énorme !) Et chaque adresse contenue dans chaque ligne renvoie vers un bloc de données. On dit que ces blocs de donnés sont doublement indirects :

Je vous laisse déduire pour la ligne 15… on parle ici de triple redirection !

Très simplement, on pourrait résumer la chose comme ça : plus il y a de redirections, plus le fichier grossit

En fait, il faut se rendre compte que toutes ces différentes vues sont des niveaux de zoom sur un même fichier, qui grossit au fur et à mesure qu’on va loin dans les redirections.

Allez, ça suffit comme ça pour la théorie, je vous montre tout ça dans un screencast qui vous montre les inodes sur vos disques. J’en profite également pour vous montrer les opérations de copie/déplacement et suppression. Et puis au passage, je vous montre également le système de lien dur et lien symbolique. C’est parti !

:TODO_DOCUPDATE:

En résumé

  • vi est l'éditeur de texte en mode terminal de référence sous Linux ;
  • emacs intègre des extensions en langage lips qui font de lui bien plus d'un simple éditeur de texte ;
  • nano est un éditeur très intéressant pour faire la transition depuis le monde Windows ;
  • Les fichiers sont gérés dans le noyau Linux par des structures nommées inodes ;
  • Les opérations classiques de Copie/Déplacement/Suppression de fichier sous Linux sont exécutées sur les inodes avec les commandes cp / mv / rm ;
  • Les liens durs/symboliques sous Linux représentent des pointeurs entre inodes et sont gérés avec la commande ln.

Il ne vous manque plus que les concepts fondamentaux de gestion des droits d'accès à ces objets sous Linux, et c'est justement le sujet du chapitre suivant. On y va ?

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/sysadmin/administrer_un_systeme_linux/230_edition_suppression_fichiers.txt · Dernière modification : 2024/01/24 17:22 de yoann