Apprendre les commandes Linux avancées
Mise à jour :
Dans le chapitre précédent, nous
avons vu les commandes de base permettant de découvrir le système d’exploitation
Linux. Dans ce chapitre, nous allons voir des commandes, que nous allons appeler
avancées
, car elles vont vous permettre d’administrer réellement des serveurs
Linux. La maîtrise de ces commandes est essentielle pour quiconque souhaite
administrer efficacement des serveurs Linux.
Pour chacune des commandes Linux, je fournirai des conseils pratiques, des astuces et des exemples concrets pour vous aider à appliquer ces nouvelles connaissances.
Conseils d’apprentissage
Pour bien apprendre, je vous conseille d’avoir un serveur Linux à disposition pour tester ces commandes. Le mieux est d’en virtualiser une sur votre poste de travail avec un outil comme Vagrant.
Informations système
df (disk filesystem)
La commande df
affiche l’espace disque utilisé et disponible.
Les principales options à connaître :
-T
: Affiche le type de filesystem.-b|-k|-m|-g|-h|-H
: Affiche soit la taille en bytes, soit en Ko, soit en Mo, soit en Go, soit dans un format lisible par un humain.-i
: Affiche le nombre d’inodes
du (disk usage)
La commande linux du
affiche l’espace utilisé par les fichiers et les dossiers.
Les principales options à connaître :
-s
: Affiche la taille totale d’un répertoire et non pas son détail.-b|-k|-m|-g|-h
: Affiche soit la taille en bytes, soit en Ko, soit en Mo, soit en Go, soit dans un format lisible par un humain.
Cette commande associée à la commande sort
permet de retrouver le dossier
pouvant occuper le plus d’espace disque.
free
La commande linux free
Affiche la mémoire libre et utilisée dans le système.
Les principales options à connaître :
-b|-k|-m|-g|-h
: Affiche soit la taille en bytes, soit en Ko, soit en Mo, soit en Go, soit dans un format lisible par un humain.-s n
: Rafraichis l’affichage tous les n secondes
uname
La commande uname
fournit des informations sur le système :
Les principales options à connaître :
-s
ou--kernel-name
: Retourne le nom du noyau, IciLinux
.-n
ou--nodename
: Retourne le nom d’hôte de votre machine, icipop-os
.-r
ou--kernel-release
: Retourne la version actuelle du noyau , ici6.5.6-76060506-generic
.-v
ou--kernel-version
: Retourne la date à laquelle a été compilé le noyau (date de mise à jours ou d’installation de la machine la plupart du temps) , ici#202310061235~1697396945~22.04~9283e32 SMP PREEMPT_DYNAMIC Sun O
-i
ou--machine
: Retourne le nom de l’architecture matérielle de la machine. icix86_64
-o
ou--operating-system
: Retourne l’OS sur lequel on exécute la commande. iciGNU/Linux
-a
ou--all
: Retourne toutes les informations sur une seule ligne
Gestion des processus
ps (process status)
La commande ps
permet de lister les processus en cours d’exécution sur un
système. Elle fournit des informations détaillées sur les processus en cours
d’exécution, tels que leur identifiant de processus (PID), leur état, leur
utilisation de CPU, leur occupation mémoire, etc.
Voici la syntaxe de base de la commande ps
:
Exemples d’utilisation courante de la commande ps
:
1. Afficher les processus de l’utilisateur actuel : Pour afficher tous les
processus appartenant à l’utilisateur actuellement connecté, vous pouvez
simplement exécuter la commande ps
sans options :
Cette commande affichera une liste de processus avec des informations de base.
2. Afficher tous les processus du système : Pour afficher tous les processus
du système, y compris ceux des autres utilisateurs, utilisez l’option -e
:
3. Afficher plus d’informations sur les processus : Vous pouvez utiliser
l’option -f
pour obtenir plus d’informations sur les processus, notamment
le PID, le PPID (parent PID), le groupe de processus, l’utilisateur,
l’utilisation de la CPU et de la mémoire, la date de démarrage, la commande
complète, etc.
4. Afficher les processus d’un utilisateur spécifique : Si vous souhaitez
afficher les processus d’un utilisateur spécifique, utilisez l’option -u
suivie du nom d’utilisateur. Par exemple, pour afficher les processus de
l’utilisateur “john” :
5. Afficher les processus d’un groupe de processus spécifique : Pour
afficher les processus appartenant à un groupe de processus spécifique,
utilisez l’option -g
suivi de l’identifiant du groupe de processus (GID).
Par exemple, pour afficher les processus du groupe de processus avec le GID
1000 :
6. Afficher les processus en temps réel : Pour afficher les processus en
temps réel à mesure qu’ils sont exécutés, utilisez l’option -e
avec la
commande watch
. Par exemple, pour afficher tous les processus toutes les 2
secondes :
7. Afficher les processus avec un format personnalisé : Vous pouvez
personnaliser le format de sortie en utilisant l’option -o
suivi d’une
liste de champs à afficher. Par exemple, pour afficher le PID et la commande
complète des processus :
top
La commande top
permet de surveiller en temps réel l’utilisation des
ressources système, notamment l’utilisation CPU, de la mémoire par les processus
en cours d’exécution.top
est un outil précieux pour la surveillance en direct
et le diagnostic des problèmes de performances. ps
affiche aussi les
informations suivantes :
- L’heure actuelle.
- Le temps écoulé depuis le démarrage du système. (uptime)
- Le nombre total de tâches, de tâches en cours d’exécution, de tâches en mode utilisateur et en mode noyau.
- L’utilisation actuelle de la CPU (en pourcentage) par les processus.
- L’utilisation de la mémoire physique (RAM) et de la mémoire d’échange (swap).
- Des informations sur la charge du système, le
load average
sur 1, 5 et 15 minutes.
Il suffit de lancer simplement top
dans un terminal pour afficher une vue en
direct des performances du système :
Pour trier la liste des processus par un critère différent, appuyez sur une des touches suivantes :
P
: Trie par utilisation de la CPU.M
: Trie par utilisation de la mémoire.N
: Trie par PID (identifiant de processus).T
: Trie par temps cumulatif d’utilisation de la CPU.
Pour quitter top
, appuyez simplement sur la touche [q].
kill
La commande kill
permet d’envoyer des signaux à des processus en cours
d’exécution. Ces signaux peuvent être utilisés pour demander à un processus de
s’arrêter, de redémarrer, de recharger sa configuration, ou pour effectuer
d’autres actions spécifiques. kill
est couramment utilisée pour gérer et
contrôler les processus sur un système.
Voici la syntaxe de base de la commande kill
:
PID
: L’identifiant de processus (PID) du processus que vous souhaitez cibler. Vous pouvez obtenir le PID d’un processus en utilisant des commandes telles queps
,top
vu précédemment.options
: Des options facultatives pour personnaliser le comportement de la commandekill
. L’une des options les plus couramment utilisées est-s
(ou--signal
), suivie du numéro du signal à envoyer.
Exemples d’utilisation courante de la commande kill
:
1. Arrêter un processus : Pour arrêter (terminer) un processus en cours
d’exécution, vous pouvez utiliser la commande kill
suivi du PID du
processus. Par exemple, pour arrêter un processus avec le PID 12345 :
Par défaut, kill
envoie le signal SIGTERM (signal de terminaison) au
processus, ce qui demande au processus de s’arrêter proprement.
2. Forcer l’arrêt d’un processus : Si un processus ne répond pas ou si vous souhaitez forcer son arrêt, vous pouvez utiliser le signal SIGKILL (signal de destruction). Le signal SIGKILL met fin immédiatement au processus sans donner la possibilité de nettoyer ou de sauvegarder des données. Par exemple :
Notez que le signal SIGKILL doit être utilisé avec prudence, car il peut entraîner une perte de données ou des problèmes de cohérence du système de fichiers.
3. Redémarrer un processus : Certains processus peuvent être redémarrés en utilisant le signal SIGHUP (signal de hang-up). Par exemple, pour redémarrer le démon Apache sur un serveur Web :
Le comportement précis du signal SIGHUP dépend du processus spécifique et de la manière dont il gère ce signal.
4. Recharger la configuration d’un processus : Certains processus, tels que les serveurs web ou les serveurs de bases de données, peuvent être invités à recharger leur configuration sans interrompre leur activité en utilisant le signal SIGUSR1 (signal utilisateur défini). Par exemple :
Les commandes de filtre
Les commandes de filtres sous Linux sont conçues pour traiter et manipuler des flux de texte. Elles sont couramment utilisées pour filtrer, transformer et formater des données textuelles. Voici quelques-unes des commandes de filtres les plus couramment utilisées sous Linux :
egrep
Une version améliorée de la commande grep
qui permet de rechercher des motifs
en utilisant une version étendue des expressions régulières (?
, +
, {}
,
()
et |
). Pour information aussi accessible avec la commande grep -E
.
Exemple :
Imaginons que nous ayons un fichier nommé fichier.txt
contenant ces lignes :
La commande ne retourne que les lignes contenant 1
ou 5
.
fgrep
La commande fgrep
, également appelée avec la commande grep -F
, utilise la
recherche de motifs en texte brut, sans interpréter les métacaractères spéciaux
et les [regex](/docs/developper/expressions-regulieres/. Cela signifie que tous les caractères
spéciaux sont traités comme des caractères littéraux. Cela peut être utile
lorsque vous voulez rechercher des motifs qui contiennent des caractères
spéciaux tels que .
ou *
sans les avoir interprétés comme des expressions
régulières.
Exemple :
Avec le fichier précédent cela ne retourne aucune ligne.
cut
La commande cut
est utilisée pour extraire des portions spécifiques
de lignes de texte à partir de fichiers ou de flux de données.
Voici la syntaxe de base de la commande cut
:
options
: Des options facultatives qui permettent de personnaliser le comportement decut
. Les options couramment utilisées incluent-d
pour spécifier le délimiteur,-f
pour spécifier les champs à extraire, et d’autres options de formatage.fichier
: Le nom du fichier (ou le flux de données) sur lequel vous souhaitez appliquercut
.
Voici quelques exemples d’utilisation courante de la commande cut
:
Exemple 1 : Extraire une colonne spécifique :
Vous pouvez utiliser cut
pour extraire une colonne spécifique de données en
spécifiant le numéro de champ à l’aide de l’option -f
. Par exemple, pour
extraire la deuxième colonne (champ) de chaque ligne de notre fichier :
Dans cet exemple, -d $'\t'
spécifie une tabulation comme délimiteur.
et -f 2
indique que la deuxième colonne doit être extraite.
Exemple 2 : Extraire plusieurs colonnes :
Vous pouvez extraire plusieurs colonnes en spécifiant les numéros de champ séparés par des virgules. Par exemple, pour extraire les colonnes 1, 3 et 4 de notre fichier :
Dans cet exemple, -f 1,3,4
indique que les colonnes 1, 3 et 4 doivent être
extraites.
Exemple 4 : Extraire une plage de caractères :
Vous pouvez également utiliser cut
pour extraire une plage de caractères
(plutôt qu’une colonne spécifique) en utilisant l’option -c
. Par exemple, pour
extraire les caractères de 5 à 10 de chaque ligne de notre fichier texte :
Dans cet exemple, -c 5-10
indique que les caractères de la 5e à la 10e
position de chaque ligne doivent être extraits.
sort
La commande sort
est utilisée pour trier les lignes d’un fichier ou de la
sortie d’une commande en fonction de critères de tri spécifiés.
Options courantes :
-r
: Trie en ordre inverse (du plus grand au plus petit).-n
: Trie numériquement au lieu de lexicographiquement (pour trier correctement les nombres).-u
: Supprime les lignes en double lors du tri.-k N
: Trie en utilisant la colonne N comme clé (N étant un numéro de colonne).-t CARACTERE
: Spécifie un caractère de délimitation pour diviser les champs.
Exemple d’utilisation :
uniq
La commande uniq
est utile pour nettoyer les données en éliminant les
doublons, en comptant les occurrences ou en effectuant d’autres opérations sur
les lignes consécutives d’un fichier ou d’une sortie de commande. Elle offre
plusieurs options pour personnaliser son comportement en fonction de vos
besoins.
Options courantes :
-d
: Affiche uniquement les lignes en double.-u
: Affiche uniquement les lignes uniques (c’est-à-dire supprime les doublons).-c
: Affiche le nombre de fois que chaque ligne apparaît dans le fichier.-i
: Ignore la casse lors de la comparaison des lignes.-f N
: Ignore les N premiers champs (séparés par des espaces ou des tabulations) lors de la comparaison des lignes.-s N
: Ignore les N premiers caractères de chaque ligne lors de la comparaison.
Exemple d’utilisation :
- Supprimer les lignes en double d’un fichier texte :
- Afficher les lignes en double avec leur comptage :
- Ignorer la casse lors de la comparaison :
tr (translate)
La commande tr
, qui est principalement
utilisée pour effectuer des transformations simples sur des caractères dans un
flux de données ou un fichier texte. tr
permet de traduire, de supprimer ou de
remplacer des caractères spécifiques dans le texte.
Voici la syntaxe de base de la commande tr
:
options
: Des options facultatives qui permettent de personnaliser le comportement detr
.set1
: Le jeu de caractères d’origine que vous souhaitez traiter ou traduire.set2
: Le jeu de caractères de destination auquel vous souhaitez traduire ou remplacer les caractères deset1
.
tr
effectue des opérations de traduction en remplaçant chaque caractère de
set1
par le caractère correspondant dans set2
. Les caractères de set1
et
set2
doivent être spécifiés dans le même ordre.
Voici quelques exemples d’utilisation courante de la commande tr
:
Exemple 1 : Conversion de majuscules en minuscules :
Pour convertir toutes les lettres majuscules en minuscules dans un fichier
texte, vous pouvez utiliser tr
de la manière suivante :
Dans cet exemple, A-Z
représente toutes les lettres majuscules de l’alphabet,
et a-z
représente les lettres minuscules correspondantes. tr
traduira toutes
les lettres majuscules en minuscules.
Exemple 2 : Suppression de caractères :
Supposons que vous souhaitiez supprimer toutes les occurrences d’un caractère
spécifique, comme les espaces, d’un fichier texte. Vous pouvez utiliser tr
pour cela :
Dans cet exemple, l’option -d
est utilisée pour supprimer tous les espaces de set1
.
Exemple 3 : Remplacement de caractères :
Si vous souhaitez remplacer un caractère par un autre, vous pouvez utiliser
tr
. Par exemple, pour remplacer toutes les occurrences du caractère a
par
b
dans un fichier texte :
Dans cet exemple, a
dans set1
est remplacé par b
dans set2
.
wc (word count)
La commande wc
est principalement utilisée pour compter le nombre de lignes,
de mots et d’octets (caractères) dans un fichier texte ou un flux de données.
options
: Des options facultatives qui permettent de personnaliser le comportement dewc
. Les options couramment utilisées incluent-l
pour compter les lignes,-w
pour compter les mots et-c
pour compter les octets (caractères).fichier
: Le nom du fichier (ou le flux de données) sur lequel vous souhaitez effectuer le comptage.
Voici quelques exemples d’utilisation courante de la commande wc
:
Exemple 1 : Compter le nombre de lignes dans un fichier :
Pour compter le nombre de lignes dans un fichier texte, vous pouvez utiliser
wc
avec l’option -l
de la manière suivante :
Cela affichera le nombre de lignes dans le fichier fichier.txt
.
Exemple 2 : Compter le nombre de mots dans un fichier :
Pour compter le nombre de mots dans un fichier texte, vous pouvez utiliser wc
avec l’option -w
de la manière suivante :
Cela affichera le nombre de mots dans le fichier fichier.txt
. Notez que wc
considère les espaces, les tabulations et les sauts de ligne comme des
délimiteurs de mots.
Exemple 3 : Compter le nombre d’octets (caractères) dans un fichier :
Pour compter le nombre d’octets (caractères) dans un fichier texte, vous pouvez
utiliser wc
avec l’option -c
de la manière suivante :
Cela affichera le nombre d’octets (caractères) dans le fichier fichier.txt
, y
compris les caractères d’espacement et les caractères de contrôle.
paste
La commande paste
est utilisée pour fusionner (coller) des lignes de fichiers
côte à côte.
Options courantes :
-d DELIM
: Spécifie un délimiteur personnalisé pour séparer les colonnes.
Exemple d’utilisation :
join
La commande join
est utilisée pour combiner les lignes de deux fichiers en
fonction d’un champ commun.
Options courantes :
-t CARACTERE
: Spécifie le caractère de séparation des champs.-1 N
: Spécifie la colonne du fichier 1 à utiliser comme clé de jointure.-2 N
: Spécifie la colonne du fichier 2 à utiliser comme clé de jointure.-a FILENUM
: Affiche également les lignes sans correspondance dans le fichier FILENUM.-o FORMAT
: Spécifie le format de sortie des lignes fusionnées.
Exemple d’utilisation :
comm
La commande comm
est utilisée pour comparer deux fichiers texte ligne par
ligne et afficher les lignes qui sont communes aux deux fichiers ainsi que
celles qui sont uniques à chaque fichier. Elle est utile pour identifier les
similitudes et les différences entre deux ensembles de données. Voici une
explication de la commande comm
avec ses options courantes :
fichier1
: Le premier fichier à comparer.fichier2
: Le deuxième fichier à comparer.
Options courantes :
-1
: Supprime la colonne des lignes uniques àfichier1
.-2
: Supprime la colonne des lignes uniques àfichier2
.-3
: Supprime les colonnes des lignes communes.-i
: Ignore la casse lors de la comparaison.-u
: Affiche uniquement les lignes uniques à chaque fichier (ne montre pas les lignes communes).-t
: Utilise un caractère de délimitation de champ (par défaut, c’est la tabulation).
Exemple d’utilisation :
Supposons que vous ayez deux fichiers texte fichier1.txt
et fichier2.txt
avec le contenu suivant :
fichier1.txt
:
fichier2.txt
:
Vous pouvez utiliser comm
pour comparer ces deux fichiers comme suit :
Le résultat affiché serait :
Dans cet exemple, comm
affiche les lignes communes dans la première colonne,
les lignes uniques à fichier1.txt
dans la deuxième colonne et les lignes
uniques à fichier2.txt
dans la troisième colonne.
Vous pouvez utiliser les options -1
, -2
, -3
, -i
et -u
pour
personnaliser davantage la sortie de comm
en fonction de vos besoins de
comparaison.
nl (numéro de ligne)
La commande nl
est utilisée pour numéroter les lignes d’un fichier texte ou de
l’entrée standard (stdin) et afficher le résultat avec des numéros de ligne.
Elle est généralement utilisée pour faciliter la référence et la recherche de
lignes spécifiques dans un fichier. Voici une explication de base de la commande
nl
avec ses options courantes :
fichier
: Le fichier dont vous souhaitez numéroter les lignes. Si vous ne spécifiez pas de fichier,nl
utilisera l’entrée standard (stdin).
Options courantes :
-b STYLE
: Spécifie le style de numérotation des lignes. Les valeurs courantes incluenta
(numérotation de toutes les lignes),t
(numérotation des lignes non vides uniquement) etn
(pas de numérotation).-n FORMAT
: Spécifie le format du numéro de ligne (par exemple,-n rz
affiche des numéros de ligne à droite, remplissant avec des zéros).-s SEPARATEUR
: Utilise un séparateur personnalisé entre le numéro de ligne et le contenu de la ligne.
Exemple d’utilisation :
Supposons que vous ayez un fichier texte nommé exemple.txt
avec le contenu suivant :
Vous pouvez utiliser nl
pour numéroter les lignes de ce fichier comme suit :
Le résultat affiché serait :
Dans cet exemple, nl
a numéroté les lignes du fichier exemple.txt
par
défaut, en commençant par 1 et en ajoutant un espace comme séparateur entre les
numéros de ligne et le contenu de chaque ligne.
Vous pouvez personnaliser davantage la manière dont les lignes sont numérotées
en utilisant les options -b
, -n
et -s
en fonction de vos besoins. Numérote
les lignes d’un fichier ou d’un flux de données.
tee
La commande tee
est utilisée pour lire l’entrée standard (stdin), écrire cette
entrée à la fois sur la sortie standard (stdout) et dans un ou plusieurs
fichiers spécifiés. Elle est couramment utilisée pour afficher le contenu d’une
commande à l’écran tout en l’enregistrant dans un fichier. Voici une explication
de base de la commande tee
avec ses options courantes :
[options]
: Les options facultatives pour personnaliser le comportement detee
.[fichier...]
: Les noms des fichiers dans lesquels vous souhaitez écrire les données. Si vous ne spécifiez pas de fichiers,tee
n’écrira que sur la sortie standard (écran).
Options courantes :
-a
: Appending (ajout) au lieu d’écraser les fichiers existants. Cette option permet d’ajouter du contenu à des fichiers existants au lieu de les remplacer.-i
: Ignore les signaux interrupteurs, ce qui permet de continuer même si vous interrompez le processus.-p
: Préfixe chaque ligne de sortie avec le nom du fichier correspondant. Cette option ajoute le nom du fichier en préfixe à chaque ligne écrite dans les fichiers spécifiés.
Exemple d’utilisation :
- Lire l’entrée standard et l’écrire dans un fichier :
Cette commande prend la chaîne “Contenu de test” depuis l’entrée standard,
l’affiche à l’écran et l’écrit également dans le fichier fichier.txt
.
- Lire l’entrée standard et l’ajouter à un fichier existant :
Cette commande ajoute la chaîne “Nouveau contenu” à la fin du fichier
fichier.txt
grâce à l’option -a
.
- Lire l’entrée standard, afficher sur l’écran avec le préfixe du nom de fichier et enregistrer dans deux fichiers :
Cette commande écrit la chaîne “Données importantes” dans les fichiers
fichier1.txt
et fichier2.txt
, tout en ajoutant un préfixe indiquant le nom
du fichier d’origine à chaque ligne.
rev
La commande rev
est utilisée pour inverser l’ordre des caractères dans chaque
ligne d’un fichier ou de la sortie d’une commande. Elle est principalement
utilisée pour inverser le texte d’une ligne, ce qui peut être utile dans
certaines situations de traitement de texte. Voici une explication de base de la
commande rev
avec quelques exemples :
[options]
: Les options facultatives pour personnaliser le comportement derev
.[fichier...]
: Les noms des fichiers à inverser. Si vous ne spécifiez pas de fichiers,rev
lira l’entrée standard (stdin).
Exemple d’utilisation :
- Inverser une ligne de texte :
Cette commande prend la chaîne “Hello, World!” depuis l’entrée standard, inverse l’ordre de ses caractères et affiche le résultat à l’écran. Le résultat sera “dlroW ,olleH!”.
- Inverser le contenu d’un fichier texte :
Cette commande inverse toutes les lignes du fichier fichier.txt
et affiche le
résultat à l’écran.
fold
La commande fold
est utilisée pour formater le texte en le pliant (coupant) en
lignes de longueur spécifiée. Elle est généralement utilisée pour s’assurer que
les lignes de texte restent sous une certaine longueur lors de l’affichage ou de
l’impression. Voici une explication de base de la commande fold
avec ses
options courantes :
[options]
: Les options facultatives pour personnaliser le comportement defold
.[fichier...]
: Les noms des fichiers à plier. Si vous ne spécifiez pas de fichiers,fold
lira l’entrée standard (stdin).
Options courantes :
-b NUM
ou-w NUM
: Spécifie la largeur maximale de la ligne en fonction du nombre de caractères (-b
) ou du nombre de colonnes (-w
). Vous devez utiliser l’une de ces options pour définir la largeur maximale.-s
: Plie uniquement à des espaces ou des tabulations. Cette option permet de plier uniquement aux limites de mots, en évitant de couper les mots en deux.
Exemple d’utilisation :
- Plier un fichier texte en lignes de 80 caractères de largeur :
Cette commande plie le contenu du fichier fichier.txt
en lignes de 80
caractères de largeur maximale. Si une ligne dépasse cette largeur, elle est
coupée et le reste est placé sur la ligne suivante.
- Plier un texte en lignes de 30 caractères en évitant de couper les mots :
Cette commande prend la chaîne de texte donnée en entrée, la plie en lignes de 30 caractères de largeur maximale tout en évitant de couper les mots en deux. La sortie sera formatée en conséquence.
sed
L’éditeur de flux (Stream EDitor) permet de modifier, de supprimer, de remplacer et de transformer des lignes de texte en utilisant des expressions régulières.
La commande sed
, est principalement utilisée pour effectuer des manipulations
de texte dans un flux de données ou dans un fichier texte. sed
fonctionne en
traitant le texte ligne par ligne et en appliquant des règles de substitution,
de suppression, de recherche et d’autres opérations définies par l’utilisateur.
La syntaxe de base de la commande sed
est la suivante :
options
: Des options facultatives qui permettent de personnaliser le comportement desed
.commande
: L’expressionsed
qui spécifie les opérations à effectuer sur le texte. Cette expression peut inclure des commandes de modification, des motifs de recherche, des substitutions, etc.fichier
: Le nom du fichier (ou le flux de données) sur lequel vous souhaitez appliquer les modifications.
Voici quelques exemples d’utilisation courante de la commande sed
:
Exemple 1 : Remplacement de texte :
Supposons que vous ayez un fichier texte contenant le mot “ancien_mot” que vous
souhaitez remplacer par “nouveau_mot”. Vous pouvez utiliser sed
de la manière
suivante :
Dans cet exemple, s
est une commande de substitution,
/ancien_mot/nouveau_mot/
est le motif de recherche et de remplacement et g
signifie que la substitution doit être appliquée à toutes les occurrences de
“ancien_mot” dans chaque ligne.
Exemple 2 : Suppression de lignes :
Supposons que vous souhaitiez supprimer toutes les lignes d’un fichier contenant
le mot supprimer
. Vous pouvez utiliser sed
de la manière suivante :
Dans cet exemple, /supprimer/
est un motif de recherche et d
est une
commande pour supprimer les lignes correspondant au motif.
Exemple 3 : Ajout de texte :
Supposons que vous souhaitiez ajouter une ligne après chaque ligne contenant le
mot “ajouter”. Vous pouvez utiliser sed
de la manière suivante :
Dans cet exemple, /ajouter/
est un motif de recherche et a
est une commande
pour ajouter une ligne après les lignes correspondant au motif.
Exemple 4 : Numérotation des lignes :
Vous pouvez utiliser sed
pour ajouter des numéros de ligne à un fichier. Par
exemple, pour numéroter les lignes d’un fichier :
La première commande sed
ajoute les numéros de ligne et la deuxième commande
sed
fusionne ces numéros de ligne avec le texte.
awk
awk
est une des commandes à connaitre absolument. C’est un outil de traitement
de fichiers par ligne très puissant. Elle est utilisée pour manipuler, traiter
et formater des données textuelles, en particulier des données séparées par des
caractères identiques, qu’on appelle séparateur ou délimiteur. Cela peut être
une tabulation (par défaut), une virgule, point-virgule ou toute autre séquence
de caractères.
awk
fonctionne en lisant des lignes de texte ou la sortie standard, en les
divisant en champs, puis en effectuant des opérations sur ces champs. Elle est
largement utilisée pour effectuer des tâches de traitement de données, d’analyse
de fichiers de données et de génération de rapports.
La syntaxe de base de la commande awk
est la suivante :
pattern
: Un motif qui spécifie les lignes sur lesquelles l’action doit être appliquée. Si vous omettez le motif, l’action sera appliquée à chaque ligne.action
: Les opérations que vous souhaitez effectuer sur les lignes correspondant au motif. Les actions sont généralement délimitées par des accolades{}
.fichier
: Le nom du fichier (ou le flux de données) sur lequel vous souhaitez appliquerawk
.
Voici quelques exemples d’utilisation courante de la commande awk
:
Exemple 1 : Afficher la première colonne d’un fichier avec des données séparées par des tabulations :
Supposons que vous ayez un fichier texte nommé fichier.txt
contenant avec
plusieurs colonnes,
Vous souhaiteriez afficher la première colonne (champ) de chaque ligne. Vous
pouvez utiliser awk
de la manière suivante :
Dans cet exemple, $1
fait référence au premier champ de chaque ligne, et
print
affiche ce champ.
Exemple 2 : Calculer la somme d’une colonne numérique :
Supposons que vous vous souhaiteriez calculer la somme de la seconde colonne. Vous
pouvez utiliser awk
pour cela :
Dans cet exemple, $2
fait référence au deuxième champ de chaque ligne (la
colonne numérique) et sum
accumule les valeurs de ce champ. L’action END \{print sum\}
est exécutée après avoir traité toutes les lignes et affiche la
somme totale.
Exemple 3 : Filtrer les lignes qui correspondent à un motif :
Supposons que vous souhaitiez afficher uniquement les lignes d’un fichier qui
contienne un mot spécifique. Vous pouvez utiliser awk
de la manière suivante
:
Dans cet exemple, /1/
est un motif de recherche qui correspond aux lignes
contenant le chiffre “1” et print
affiche ces lignes.
Exemple 4 : Manipuler la structure des données :
awk
permet également de manipuler la structure des données. Par exemple, vous
pouvez réorganiser les colonnes, ajouter des en-têtes, ou générer des rapports
formatés à partir de données brutes.
Cette commande réorganise les colonnes en affichant d’abord le deuxième champ suivi du premier champ.
awk
offre de nombreuses autres fonctionnalités et possibilités, notamment les
expressions régulières, les variables d’awk, les fonctions intégrées et bien
plus encore. C’est un outil très flexible et puissant pour le traitement de
données textuelles. Pour en savoir plus sur awk
et ses capacités, vous pouvez
consulter la page de manuel en utilisant la commande man awk
.
diff
La commande diff
permet de comparer le contenu de deux fichiers ou de deux
répertoires et d’afficher les différences entre eux. diff
est souvent utilisée
pour trouver les modifications apportées à un fichier texte, à un code source ou
à un répertoire entre deux versions différentes.
Exemple de commandes avancées
Rechercher et afficher les 10 commandes que vous utilisez le plus :
Génération d’un mot de passe aléatoire d’une longeur de 30 caractères
Autres commandes utiles
watch
La commande watch
permet d’exécuter périodiquement une autre commande et
d’afficher sa sortie de manière répétée dans un terminal. Cela permet de
surveiller en temps réel l’évolution d’une commande ou d’une tâche sans avoir à
la relancer manuellement à plusieurs reprises.
Voici la syntaxe de base de la commande watch
:
Par exemple, si vous souhaitez surveiller la présence d’un processus particulier à intervalles réguliers de 2 secondes, vous pouvez utiliser la commande suivante :
donne l’affichage suivant :
Si la commande possède un pipe, il faut la mettre entre double quote.
L’astuce pour ne pas retrouver la commande grep
dans la liste des process avec
l’utilisation de l’[expression régulière](/docs/developper/expressions-regulieres/.
Pour quitter, il suffit d’utiliser la séquence de touche [Ctrl] + [c].Kubernetes
Plus loin
Nous avons vu dans ce chapitre des commandes permettant d’administrer des serveurs Linux, mais dans un contexte DevOps où un des premiers principes est d’automatiser pour éviter les erreurs humaines entre autre, vous serez amené à exécuter ces commandes que sur des environnements dits hors production. Sur la production, on fera appel à des scripts Shell par exemple pour réaliser ces tâches. Dans le chapitre suivant, nous allons voir comment développer ces scripts Shell.