Recherche de site Web

LFCS #1 : Comment utiliser la commande 'sed' pour la manipulation de fichiers sous Linux


La Linux Foundation a annoncé la certification LFCS (Linux Foundation Certified Sysadmin), un nouveau programme qui vise à aider les individus du monde entier à obtenir une certification pour les tâches d'administration système de base à intermédiaires pour les systèmes Linux.

Cela inclut la prise en charge des systèmes et des services en cours d'exécution, ainsi que le dépannage et l'analyse de première main, ainsi que la prise de décision intelligente pour transmettre les problèmes aux équipes d'ingénierie.

Depuis la dernière révision du 11 août 2023, nous avons méticuleusement pris en compte les domaines et les compétences, conformément à la date d'entrée en vigueur du 11 mai 2023, telle que officiellement déclarée par la Fondation Linux.

La série sera intitulée Préparation pour les parties LFCS (Linux Foundation Certified Sysadmin) 1 à 33 et couvrira les les sujets suivants:

Part 1

Comment utiliser la commande « Sed » pour manipuler des fichiers sous Linux

Part 2

Comment installer et utiliser Vi/Vim sous Linux

Part 3

Comment compresser des fichiers et des répertoires et rechercher des fichiers sous Linux

Part 4

Partitionnement des périphériques de stockage, formatage des systèmes de fichiers et configuration de la partition d'échange

Part 5

Monter/démonter les systèmes de fichiers locaux et réseau (Samba et NFS) sous Linux

Part 6

Assemblage de partitions en tant que périphériques RAID – Création et gestion des sauvegardes système

Part 7

Gestion du processus et des services de démarrage du système (SysVinit, Systemd et Upstart)

Part 8

Comment gérer les utilisateurs et les groupes, les autorisations de fichiers et l'accès Sudo

Part 9

Gestion des packages Linux avec Yum, RPM, Apt, Dpkg, Aptitude et Zypper

Part 10

Apprentissage des scripts Shell de base et du dépannage du système de fichiers

Part 11

Comment gérer et créer LVM à l'aide des commandes vgcreate, lvcreate et lvextend

Part 12

Comment explorer Linux avec les documentations et outils d'aide installés

Part 13

Comment configurer et dépanner Grand Unified Bootloader (GRUB)

Part 14

Surveiller l'utilisation des ressources des processus Linux et définir les limites des processus par utilisateur

Part 15

Comment définir ou modifier les paramètres d'exécution du noyau dans les systèmes Linux

Part 16

Implémentation du contrôle d'accès obligatoire avec SELinux ou AppArmor sous Linux

Part 17

Comment définir des listes de contrôle d'accès (ACL) et des quotas de disque pour les utilisateurs et les groupes

Part 18

Installation des services réseau et configuration du démarrage automatique au démarrage

Part 19

Un guide ultime pour configurer le serveur FTP pour autoriser les connexions anonymes

Part 20

Configurer un serveur DNS de mise en cache récursive de base et configurer des zones pour le domaine

Part 21

Comment installer, sécuriser et optimiser les performances du serveur de base de données MariaDB

Part 22

Comment installer et configurer le serveur NFS pour le partage du système de fichiers

Part 23

Comment configurer Apache avec un hébergement virtuel basé sur le nom avec un certificat SSL

Part 24

Comment configurer un pare-feu Iptables pour activer l'accès à distance aux services sous Linux

Part 25

Comment transformer un Linux en routeur pour gérer le trafic de manière statique et dynamique

Part 26

Comment configurer des systèmes de fichiers cryptés et les échanger à l'aide de l'outil Cryptsetup

Part 27

Comment surveiller l'utilisation du système, les pannes et dépanner les serveurs Linux

Part 28

Comment configurer un référentiel réseau pour installer ou mettre à jour des packages

Part 29

Comment auditer les performances, la sécurité et le dépannage du réseau

Part 30

Comment installer et gérer des machines virtuelles et des conteneurs

Part 31

Apprenez les bases de Git pour gérer des projets efficacement

Part 32

Guide du débutant pour configurer les adresses IPv4 et IPv6 sous Linux

Part 33

Guide du débutant pour créer des liaisons et des ponts réseau dans Ubuntu

Cet article constitue la partie 1 d'une série de 33 didacticiels, qui couvriront les domaines et compétences nécessaires requis pour l'examen de certification LFCS. Cela étant dit, lancez votre terminal et commençons.

Traitement des flux de texte sous Linux

Linux traite les entrées et les sorties des programmes comme des flux (ou séquences) de caractères. Pour commencer à comprendre la redirection et les canaux, nous devons d'abord comprendre les trois types les plus importants de flux d'E/S (Entrée et Sortie), qui sont en fait des fichiers spéciaux (par convention sous UNIX et Linux, flux de données et périphériques, ou fichiers de périphériques, sont également traités comme des fichiers ordinaires).

La différence entre > (opérateur de redirection) et | (opérateur de pipeline) est que si le premier connecte une commande à un fichier, le second connecte la sortie d'une commande à un autre. commande.

command > file
command1 | command2

Étant donné que l'opérateur de redirection crée ou écrase des fichiers de manière silencieuse, nous devons l'utiliser avec une extrême prudence et ne jamais le confondre avec un pipeline.

L'un des avantages des tubes sur les systèmes Linux et UNIX est qu'il n'y a pas de fichier intermédiaire impliqué dans un tube : la sortie standard de la première commande n'est pas écrite dans un fichier puis lue par la seconde commande.

Pour les exercices pratiques suivants, nous utiliserons le poème « Un enfant heureux » (auteur anonyme).

Utilisation de la commande sed

Le nom sed est l'abréviation de Stream Editor. Pour ceux qui ne connaissent pas le terme, un éditeur de flux est utilisé pour effectuer des transformations de texte de base sur un flux d'entrée (un fichier ou une entrée d'un pipeline).

Changer les minuscules en majuscules dans le fichier

L'utilisation la plus basique (et la plus populaire) de sed est la substitution de caractères. Nous commencerons par remplacer chaque occurrence du y minuscule par UPPERCASE Y et rediriger la sortie vers ahappychild2.txt.

L'indicateur g indique que sed doit effectuer la substitution de toutes les instances de term sur chaque ligne du fichier. Si cet indicateur est omis, sed remplacera uniquement la première occurrence du terme sur chaque ligne.

Syntaxe de base Sed :
sed ‘s/term/replacement/flag’ file
Notre exemple :
sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Rechercher et remplacer un mot dans un fichier

Si vous souhaitez rechercher ou remplacer un caractère spécial (tel que /, \, &), vous devez l'échapper, dans le terme ou des chaînes de remplacement, avec une barre oblique inverse.

Par exemple, nous remplacerons le mot et par une esperluette. Par la même occasion, nous remplacerons le mot I par You lorsque le premier se trouve en début de ligne.

sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

Dans la commande ci-dessus, un ^ (signe caret) est une expression régulière bien connue utilisée pour représenter le début d'une ligne.

Comme vous pouvez le voir, nous pouvons combiner deux ou plusieurs commandes de substitution (et utiliser des expressions régulières à l'intérieur) en les séparant par un point-virgule et en plaçant l'ensemble entre guillemets simples.

Imprimer les lignes sélectionnées à partir d'un fichier

Une autre utilisation de sed consiste à afficher (ou supprimer) une partie choisie d'un fichier. Dans l'exemple suivant, nous afficherons les 5 premières lignes de /var/log/messages du 8 juin.

sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

Notez que par défaut, sed imprime chaque ligne. Nous pouvons remplacer ce comportement avec l'option -n puis dire à sed d'imprimer (indiqué par p) uniquement la partie du fichier (ou le tube) qui correspond au modèle (8 juin au début de la ligne dans le premier cas et lignes 1 à 5 inclus dans le second cas).

Enfin, il peut être utile lors de l'inspection de scripts ou de fichiers de configuration d'inspecter le code lui-même et de laisser de côté les commentaires. Le one-liner sed suivant supprime (d) les lignes vides ou celles commençant par # (le caractère | indique un booléen OU< entre les deux expressions régulières).

sed '/^#\|^$/d' apache2.conf

Commande unique

La commande uniq nous permet de signaler ou de supprimer les lignes en double dans un fichier, en écrivant sur la sortie standard par défaut. Il faut noter que uniq ne détecte pas les lignes répétées sauf si elles sont adjacentes.

Ainsi, uniq est couramment utilisé avec un tri précédent (qui est utilisé pour trier les lignes de fichiers texte). Par défaut, tri prend le premier champ (séparé par des espaces) comme champ clé. Pour spécifier un champ clé différent, nous devons utiliser l'option -k.

Exemples de commandes Uniq

La commande du -sch /path/to/directory/* renvoie l'utilisation de l'espace disque par sous-répertoires et fichiers dans le répertoire spécifié dans un format lisible par l'homme (affiche également un total par répertoire) et ne classez la sortie par taille, mais par sous-répertoire et nom de fichier.

Nous pouvons utiliser la commande suivante pour trier par taille.

du -sch /var/* | sort –h

Vous pouvez compter le nombre d'événements dans un journal par date en demandant à uniq d'effectuer la comparaison en utilisant les 6 premiers caractères (-w 6) de chaque ligne (où la date est spécifié), et en préfixant chaque ligne de sortie par le nombre d'occurrences (-c) avec la commande suivante.

cat /var/log/mail.log | uniq -c -w 6

Enfin, vous pouvez combiner sort et uniq (comme ils le sont habituellement). Considérez le fichier suivant avec une liste de donateurs, la date du don et le montant. Supposons que nous voulions savoir combien il existe de donateurs uniques.

Nous utiliserons la commande cat suivante pour couper le premier champ (les champs sont délimités par deux points), trier par nom et supprimer les lignes en double.

cat sortuniq.txt | cut -d: -f1 | sort | uniq

Commande grep

La commande grep recherche dans les fichiers texte ou (sortie de la commande) l'occurrence d'une expression régulière spécifiée et affiche toute ligne contenant une correspondance avec la sortie standard.

Exemples de commandes Grep

Affichez les informations de /etc/passwd pour l'utilisateur gacanepa, en ignorant la casse.

grep -i gacanepa /etc/passwd

Afficher tout le contenu de /etc dont le nom commence par rc suivi d'un chiffre unique.

ls -l /etc | grep rc[0-9]

Utilisation de la commande tr

La commande tr peut être utilisée pour traduire (modifier) ou supprimer des caractères de stdin et écrire le résultat sur stdout.

Remplacez toutes les minuscules par des majuscules dans le fichier sortuniq.txt.

cat sortuniq.txt | tr [:lower:] [:upper:]

Réduisez le délimiteur dans la sortie de ls –l sur un seul espace.

ls -l | tr -s ' '

Utilisation de la commande Couper

La commande cut extrait des portions de lignes d'entrée (à partir de stdin ou de fichiers) et affiche le résultat sur la sortie standard, en fonction du nombre d'octets (option -b), de caractères (-c), ou des champs (-f).

Dans ce dernier cas (basé sur les champs), le séparateur de champ par défaut est une tabulation, mais un délimiteur différent peut être spécifié en utilisant l'option -d.

Exemples de commandes de coupe

Extrayez les comptes utilisateurs et les shells par défaut qui leur sont attribués depuis /etc/passwd (l'option –d nous permet de spécifier le délimiteur de champ et le –f Le commutateur indique quel(s) champ(s) seront extraits.

cat /etc/passwd | cut -d: -f1,7

En résumé, nous allons créer un flux de texte composé du premier et du troisième fichiers non vides de la sortie de la dernière commande. Nous utiliserons grep comme premier filtre pour vérifier les sessions de l'utilisateur gacanepa, puis réduirons les délimiteurs à un seul espace (tr -s ' ' ).

Ensuite, nous extrairons les premier et troisième champs avec cut, et enfin trierons selon le deuxième champ (les adresses IP dans ce cas) qui s'avère unique.

last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

La commande ci-dessus montre comment plusieurs commandes et tuyaux peuvent être combinés afin d'obtenir des données filtrées selon nos envies. N'hésitez pas à l'exécuter également par parties, pour vous aider à voir le résultat qui passe d'une commande à la suivante (cela peut être une excellente expérience d'apprentissage, d'ailleurs !).

Résumé

Bien que cet exemple (ainsi que le reste des exemples du didacticiel actuel) puisse ne pas sembler très utile à première vue, il constitue un bon point de départ pour commencer à expérimenter les commandes utilisées pour créer, éditer et manipuler des fichiers à partir du système Linux. ligne de commande.

N'hésitez pas à laisser vos questions et commentaires ci-dessous – ils seront très appréciés !

Le livre électronique LFCS est disponible dès maintenant à l'achat. Commandez votre copie aujourd'hui et commencez votre parcours pour devenir un administrateur système Linux certifié !

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

Enfin, pensez à acheter votre bon d'examen en utilisant les liens suivants pour nous gagner une petite commission, qui nous aidera à maintenir ce livre à jour.