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.