Aller au contenu principal

Apprendre les commandes Linux de base

La maîtrise des commandes linux est essentielle pour quiconque souhaite exploiter ou administrer efficacement des serveurs Linux. Que vous soyez étudiant, développeur, administrateur système, ou simplement passionné de technologie, comprendre comment utiliser ces commandes enrichira vos compétences Linux.

A une époque pas si lointaine Linux se distinguait de Windows par la présence de d'une interface en ligne de commande (CLI) pouvant effectuer des opérations complexes, automatiser des tâches sans faire appel à une interface graphique.

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.

Quelques définitions

Qu'est-ce qu'un émulateur de terminal ?

Sur un environnement graphique, un terminal est un programme qui permet à l’utilisateur d'interagir avec le shell.

Qu'est-ce qu'un shell ?

Le shell est un programme qui reçoit les commandes saisies par l'utilisateur à partir de son clavier pour les envoyer au système d’exploitation qui se chargera de les exécuter.

Il comprend un interpréteur en ligne de commande qui accepte l’entrée de l’utilisateur via le clavier, l’évalue, met en route les programmes en conséquence et renvoie le résultat à l’utilisateur sous forme d’une sortie texte. Chaque shell a par ailleurs son propre langage de programmation permettant d’écrire ce qu'on appelle des scripts shell.

Les principaux Shell Linux

Voici une liste des principaux shells disponibles sur les systèmes Linux :

  1. sh (Bourne Shell) : L'un des shells Unix originaux sur lequel Bash est basé. Moins fréquemment utilisé aujourd'hui mais important historiquement.
  2. Csh (C Shell) et Tcsh (TENEX C Shell) : Inspirés par le langage de programmation C, ces shells offrent des syntaxes et des fonctionnalités différentes de celles de Bourne Shell et ses dérivés.
  3. Bash (Bourne-Again Shell) : Le shell le plus courant sur Linux, connu pour sa flexibilité et sa compatibilité avec le shell Bourne.
  4. Dash (Debian Almquist Shell) : Une version légère du shell Almquist (ash), utilisée par défaut dans Debian et ses dérivés pour les scripts de démarrage du système.
  5. Ksh (Korn Shell) : Un shell amélioré par rapport à Bourne Shell, avec des fonctionnalités supplémentaires telles que l'édition de ligne en ligne de commande.
  6. Zsh (Z Shell) : Un shell avancé avec de nombreuses améliorations par rapport à Bash, notamment en termes de complétion de commandes et d'interface utilisateur.
  7. Fish (Friendly Interactive Shell) : Connu pour sa convivialité et ses fonctionnalités interactives, comme les suggestions automatiques et une coloration syntaxique riche.

Chacun de ces shells a ses propres caractéristiques et avantages et le choix dépend souvent des besoins spécifiques de l'utilisateur et de la familiarité avec la syntaxe du shell.

Qu'est-ce qu'un script shell ?

Les scripts shells sont des programmes écrits dans le langage propre au shell qui sont essentiellement utilisés pour automatiser des tâches répétitives. Les scripts shell sont écrits dans des fichiers textes et peuvent être exécutés. Nous apprendrons le script shell bash dans la prochaine section (en cours d'écriture)

Qu'est-ce qu'une commande linux ?

Une commande Linux est un programme qui s’exécute en ligne de commande. Une ligne de commande est une interface qui traite des lignes de texte en instructions pour votre ordinateur.

Les commandes linux peuvent posséder une ou plusieurs options. Les options peuvent débuter par un ou deux tirets. Par exemple l'option -h ou --help dans la plupart des commandes, affiche son aide en ligne.

ls --help
Utilisation : ls [OPTION]... [FICHIER]...
Afficher des renseignements sur les FICHIERs (du répertoire actuel par défaut).
Trier les entrées alphabétiquement si aucune des options -cftuvSUX ou --sort
ne sont utilisées.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a, --all                  ne pas ignorer les entrées débutant par .
  -A, --almost-all           ne pas inclure . ou .. dans la liste
      --author               avec -l, afficher l'auteur de chaque fichier
  -b, --escape               afficher les caractères non graphiques avec des

Un argument, appelé aussi paramètre, est l’entrée que nous donnons à une commande pour qu’elle puisse s’exécuter. De plus souvent, il s'agit d'un répertoire, un fichier.

Obtenir de l'aide sur une commande

Avec l'option -h out --help

Nous l'avons vu plus haut, le premier moyen pour obtenir de l'aide sur une commande linux est d'utiliser l'option -h ou --help :

ls --help
Utilisation : ls [OPTION]... [FICHIER]...
Afficher des renseignements sur les FICHIERs (du répertoire actuel par défaut).
Trier les entrées alphabétiquement si aucune des options -cftuvSUX ou --sort
ne sont utilisées.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a, --all                  ne pas ignorer les entrées débutant par .
  -A, --almost-all           ne pas inclure . ou .. dans la liste
      --author               avec -l, afficher l'auteur de chaque fichier
  -b, --escape               afficher les caractères non graphiques avec des
                               protections selon le style C
      --block-size=TAILLE    avec -l, dimensionner les tailles selon TAILLE avant
                               de les afficher. Par exemple, « --block-size=M ».
                               Consultez le format de TAILLE ci-dessous...

Avec la commande man

Le second moyen est d'utiliser la commande man suivi du nom de la commande :

LS(1)                                                                                   User Commands                                                                                  LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List information about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file

       -b, --escape
              print C-style escapes for nongraphic characters

       --block-size=SIZE
              with -l, scale sizes by SIZE when printing them; e.g., '--block-size=M'; see SIZE format below ...

Pour avancer dans les pages, il suffit d'appuyer sur la touche espace.

Il existe un outil du nom de tldr qui affiche des versions raccourcies des pages man.

Avec l'outil tldr

Le projet tldr-pages est une collection de pages d'aide simplifiées pour la plupart des outils de ligne de commande.

L'outil tldr peut être installé avec pip. Par exemple pour l'installer sur une distribution de la famille debian :

sudo apt install python3-pip
pipx install tldr --user
  installed package tldr 3.2.0, installed using Python 3.10.12
  These apps are now globally available
    - tldr
done! ✨ 🌟 ✨

Un exemple avec la commande ls :

tldr ls

  ls

  Liste le contenu d'un répertoire.
  Plus d'informations : https://www.gnu.org/software/coreutils/ls.

  - Liste les fichiers, un par ligne :
    ls -1

  - Liste tous les fichiers, ainsi que les fichiers cachés :
    ls -a

  - Liste tous les fichiers, avec les noms de répertoires suivis d'un `/` :
    ls -F
...

Comment trouver l'explication d'une commande

Si vous retrouvez des commandes dans des forums, des sites comme Stack OVerflow, et que vous ne comprenez pas la commande qui est indiquée alors le site explainshell est fait pour vous :

Les commandes de base Linux

ls (list)

La commande ls liste tous les fichiers et dossiers dans le répertoire actuel. Elle peut être combinée avec diverses options pour afficher des informations supplémentaires.

ls [OPTION]... [FILE]...

Les principales options à connaitre :

  • -l : Utilise le format de sortie long, c'est-à-dire affichant les permissions, le propriétaire et groupe, la taille, la date en plus du nom.
  • -1 : Affiche les fichiers sur une colonne.
  • -a : Affiche les fichiers cachés dont ceux commençant par le caractère ..
  • -h : Affiche la taille dans un format lisible par un humain.
  • -r : Trie la sortie dans l'ordre inverse.
  • -t : Trie la sortie par date et non par ordre alphabétique.
  • -c : Trie sur la date de changement de statuts des fichiers.

Il est possible de combiner certaines options, pas celles définissant le format de sortie. Un exemple :

ls -alrth
total 24K
drwxrwxr-x 31 bob bob 4,0K oct.  26 14:47 ..
-rw-rw-r--  1 bob bob  540 oct.  26 15:10 Vagrantfile
drwxrwxr-x  6 bob bob 4,0K oct.  26 15:10 .vagrant
-rw-rw-r--  1 bob bob   54 oct.  26 15:51 Dockerfile
drwxrwxr-x  3 bob bob 4,0K oct.  26 15:51 .
-rw-rw-r--  1 bob bob  358 oct.  27 06:18 provision.yml

Cette commande affiche les fichiers, dont les fichiers cachés, sous le format long. Ils sont triés par date dans l'ordre inverse. La taille est affichée dans un format lisible par l'humain.

pwd (print working directory)

La commande pwd affiche le répertoire de travail actuel, ce qui est essentiel pour comprendre le contexte lors de la navigation dans le terminal.

pwd [OPTION]...

Exemple :

pwd
/home/bob/Projets/perso/my-website

cd (change directory)

La commande cd permet de naviguer entre les différents répertoires de votre système. Elle est souvent utilisée en conjonction avec des chemins de répertoires spécifiques.

cd [-L|-P] [directory]
# ou
cd -

La principale option à connaitre est - qui permet de retourner dans le répertoire précédent :

cd -
~/Projets/perso/my-website

En retour, il affiche le répertoire de destination.

Manipulation de fichiers et de dossiers

cp (copy)

La commande linux cp copie des fichiers ou des dossiers d'un emplacement à un autre.

cp [OPTION]... [-T] SOURCE DEST
# ou
cp [OPTION]... SOURCE... DIRECTORY
# ou
cp [OPTION]... -t DIRECTORY SOURCE...

Les principales options à connaître :

  • -p : Copie avec préservation des droits, des propriétés (groupe et utilisateur) et de l'horodatage.
  • -r : Copie récursive, c'est-à-dire avec tous les fichiers présents dans un répertoire.
cp -p tsconfig.json tsconfig.json.old

ls -al ts*

-rw-rw-r-- 1 bob bob 190 sept. 23 19:12 tsconfig.json
-rw-rw-r-- 1 bob bob 190 sept. 23 19:12 tsconfig.json.old

mv (move)

La commande linux mv est utilisée pour déplacer ou renommer des fichiers ou des dossiers.

mv [OPTION]... [-T] SOURCE DEST
# ou
mv [OPTION]... SOURCE... DIRECTORY
# ou
mv [OPTION]... -t DIRECTORY SOURCE...

Les principales options à connaître :

  • -i : Demande une confirmation avec d'effectuer l'opération
  • -f : Ne demande aucune confirmation avec d'effectuer l'opération
  • -n : Ne surcharge pas les fichiers existants
mv -v /tmp/test /tmp/test2
renommé '/tmp/test' -> '/tmp/test2'

Ici le dossier /tmp/test a été renommé en /tmp/test2.

rm (remove)

La commande rm permet de supprimer des fichiers ou des dossiers de manière irrémédiable, donc à utiliser avec prudence.

rm [OPTION]... [FILE]...

Les principales options à connaître :

  • -i : affiche un prompt de confirmation avant chaque effacement.
  • -f : n'affiche aucun prompt.
  • -r : destruction récursive, autrement dit destruction de tous les répertoires contenus dans le dossier.
rm -rf /tmp/test

Ici le dossier /tmp/test a été détruit sans aucun prompt de confirmation.

attention

Sans maîtrise cette commande peut avoir des conséquences irrémédiables, surtout si avec les options -rf associés avec l'élévation de privilèges.

mkdir (make directory)

La commande mkdir permet de créer de nouveaux répertoires.

mkdir [OPTION]... DIRECTORY...

Les principales options à connaître :

  • -p : Crée des répertoires récursivement (utile pour créer des répertoires imbriqués)
mkdir -p 700 $HOME/Projets/DevOps /tmp/test

Création de deux arborescences de répertoires si les répertoires parents n'existent pas.

rmdir (remove directory)

La commande rmdir supprime un dossier vide. Très peu utilisé, la plupart des admin sys préférant la commande rm -r.

chmod (change mode)

La commande linux chmod modifie les permissions d'un fichier ou d'un répertoire.

chmod [OPTION]... MODE[,MODE]... FILE...
# ou
chmod [OPTION]... OCTAL-MODE FILE...
# ou
chmod [OPTION]... --reference=RFILE FILE...

Les principales options à connaître :

  • -R : modification récursive, autrement dit modification des droits de tous les répertoires et fichiers contenus dans le dossier.
  • -f : n'affiche aucun prompt.
chmod 755 ~/bin/container-structure-test

Donne les droits d'exécution sur le fichier container-structure-test présent dans le répertoire de l'utilisateur exécutant cette commande.

attention

Sans maîtrise cette commande peut avoir des conséquences irrémédiables, surtout si avec les options -rf associés avec l'élévation de privilèges.

chown (change owner)

La commande chown permet de modifier le propriétaire d'un fichier ou d'un dossier s'il a les permissions d'accès en écriture. Sinon il faudra demander soit à son propriétaire actuel, soit le faire avec une élévation de privilèges.

chown [OPTION]... [OWNER][:[GROUP]] FILE...
# ou
chown [OPTION]... --reference=RFILE FILE...

Les principales options à connaître :

  • -R : modification récursive, autrement dit modification les propriétaires de tous les répertoires et fichiers contenus dans le dossier.
  • -f : n'affiche aucun prompt.
chown $USER ~/bin/container-structure-test

Change le propriétaire sur le fichier container-structure-test présent dans le répertoire de l'utilisateur exécutant cette commande.

attention

Sans maîtrise cette commande peut avoir des conséquences irrémédiables, surtout si avec les options -rf associés avec l'élévation de privilèges.

chgrp (change group)

La commande chgrp change le groupe associé à un fichier ou un dossier.

chgrp [OPTION]... GROUP FILE...
# ou
chgrp [OPTION]... --reference=RFILE FILE...

Les principales options à connaître :

  • -R : modification récursive, autrement dit modification du groupe de tous les répertoires et fichiers contenus dans le dossier.
  • -f : n'affiche aucun prompt.
chown un-groupe ~/bin/container-structure-test

Cette commande change le groupe sur le fichier container-structure-test présent dans le répertoire de l'utilisateur exécutant cette commande.

attention

Sans maîtrise cette commande peut avoir des conséquences irrémédiables, surtout si avec les options -rf associés avec l'élévation de privilèges.

Visualisation et édition de fichiers

cat

La commande cat affiche le contenu d'un fichier dans le terminal sans pagination.

cat [OPTION]... [FILE]...

Les principales options à connaître :

  • -n : Affiche les numéros de ligne
  • -v : Affiche les caractères non imprimable (^M) utile pour voir si un fichier est au format DOS.
cat -vn /tmp/test.sh
     1  #!/bin/bash
     2  additionner() {
     3      local resultat=$(( $1 + $2 ))
     4      return $resultat
     5  }
     6
     7
     8  additionner 5 3
     9  resultat=$?
    10  echo "La somme est : $resultat"
    11

less

La commande linux less est utilisée pour afficher le contenu d'un fichier texte ou la sortie d'une commande, en permettant de naviguer dans le texte de manière interactive. less est une amélioration de la commande more, offrant plus de fonctionnalités et une meilleure expérience utilisateur.

Une fois que vous avez ouvert un fichier avec less, vous pouvez naviguer dans le texte de différentes manières :

  • Utilisez les touches fléchées [haut] et [bas]s pour faire défiler le texte ligne par ligne.
  • Utilisez la barre [espace] pour faire défiler d'une page en avant.
  • Utilisez la touche [b] pour faire défiler d'une page en arrière.
  • Utilisez la touche [q] pour quitter et revenir au shell.

Pour tester less utiliser la commande man qui utilise less comme paginateur.

man less

LESS(1)                                                                            General Commands Manual                                                                           LESS(1)

NAME
       less - opposite of more

SYNOPSIS
       less -?
       less --help
       less -V
       less --version
       less [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
            [-b space] [-h lines] [-j line] [-k keyfile]
            [-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
            [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
            [-# shift] [+[+]cmd] [--] [filename]...
       (See the OPTIONS section for alternate option syntax with long option names.)

DESCRIPTION
       Less is a program similar to more(1), but it has many more features.  Less does not have to read the entire input file before starting, so with large input files it starts up faster
       than text editors like vi(1).  Less uses termcap (or terminfo on some systems), so it can run on a variety of terminals.  There is even limited support for hardcopy terminals.   (On
       a hardcopy terminal, lines which should be printed at the top of the screen are prefixed with a caret.)

       Commands are based on both more and vi.  Commands may be preceded by a decimal number, called N in the descriptions below.  The number is used by some commands, as indicated.

COMMANDS
       In the following descriptions, ^X means control-X.  ESC stands for the ESCAPE key; for example ESC-v means the two character sequence "ESCAPE", then "v".

       h or H Help: display a summary of these commands.  If you forget all the other commands, remember this one.

       SPACE or ^V or f or ^F
              Scroll  forward N lines, default one window (see option -z below).  If N is more than the screen size, only the final screenful is displayed.  Warning: some systems use ^V as
 Manual page less(1) line 1 (press h for help or q to quit)
Les fonctionnalités de less

less permet de rechercher un terme spécifique dans le texte :

  • Appuyez sur la touche [/] suivi du terme que vous souhaitez rechercher appuyez sur [Entrée]. less vous amènera à la première occurrence du terme trouvé et vous pourrez naviguer à travers les occurrences suivantes en appuyant sur [n] pour suivant ou [N] pour précédent.

less possède de nombreuses autres fonctionnalités utiles, telles que la possibilité de marquer des lignes, de copier du texte, de sauter à une ligne spécifique, etc. Vous pouvez obtenir une liste complète des commandes en appuyant sur la touche h pour obtenir de l'aide.

head et tail

Les commandes head et tail sont utilisées pour afficher les premières (têtes) ou les dernières (queues) lignes d'un fichier texte. Par défaut, head affiche les 10 premières lignes d'un fichier, tandis que tail affiche les 10 dernières lignes. Vous pouvez spécifier le nombre de lignes à afficher en utilisant l'option -n.

Exemples :

head -n 20 fichier.txt  # Affiche les 20 premières lignes du fichier
tail -n 5 fichier.log   # Affiche les 5 dernières lignes du fichier de journal

Ces commandes sont couramment utilisées pour visualiser les en-têtes ou les résumés de fichiers volumineux comme les fichiers de logs de services.

Les éditeurs de texte

nano et vi sont deux éditeurs de texte qui permettent de modifier des fichiers directement depuis le terminal. Ils offrent des fonctionnalités d'édition de texte, mais ils ont des interfaces et des fonctionnalités différentes. Voici une description de ces deux éditeurs, ainsi que leurs principales différences :

nano

nano est un éditeur de texte simple et convivial pour les débutants. Il est souvent recommandé pour les utilisateurs novices en raison de sa simplicité d'utilisation. L'interface de nano est relativement intuitive et affiche des raccourcis clavier courants en bas de l'écran pour aider les utilisateurs à naviguer et à effectuer des opérations. Pour ouvrir un fichier avec nano, vous pouvez simplement taper nano suivi du nom du fichier. Les principales commandes de nano sont généralement affichées à l'écran, ce qui facilite leur utilisation. Par exemple, pour enregistrer un fichier, vous appuyez sur [Ctrl] + [O], puis vous appuyez sur Entrée et pour quitter, vous appuyez sur [Ctrl] + [X]. nano est un choix solide pour les tâches d'édition de texte simples et rapides, mais il peut manquer certaines des fonctionnalités plus avancées offertes par vi.

vi

vi(ou vim) est un éditeur de texte très puissant et extensible. Il est extrêmement populaire parmi les utilisateurs expérimentés en raison de ses nombreuses fonctionnalités et de sa polyvalence. L'interface de vi peut sembler déroutante pour les débutants, car elle utilise un mode de fonctionnement avec des modes, y compris le mode commande et le mode édition. Cela signifie que pour effectuer des opérations, vous devez basculer entre ces modes. Pour ouvrir un fichier avec vi vous pouvez taper vi suivi du nom du fichier. vi offre une large gamme de commandes pour effectuer des opérations d'édition, de navigation et de recherche. Par exemple, pour insérer du texte, vous devez d'abord basculer en mode insertion en appuyant sur [i], puis vous pouvez taper votre texte. Pour enregistrer un fichier, vous devez basculer en mode commande en appuyant sur Esc, puis vous pouvez saisir :w et appuyer sur Entrée. vi est extrêmement puissant et flexible, mais il peut nécessiter une certaine période d'apprentissage pour maîtriser ses fonctionnalités.

Je vous conseille de visionner la video de xavki.

Recherche de fichiers et de dossiers

find

La commande find est un utilitaire puissant en ligne de commande sur les systèmes Unix et Linux qui permet de rechercher des fichiers et des répertoires en fonction de divers critères, tels que le nom, la taille, la date de modification, les permissions, etc. find est extrêmement flexible et utile pour localiser des fichiers dans le système de fichiers.

find chemin [options] [expression]
  • chemin : Le chemin de départ à partir duquel vous souhaitez commencer la recherche.
  • options : Des options facultatives pour personnaliser la recherche.
  • expression : Des critères de recherche spécifiques, tels que le nom du fichier, la taille, la date, etc.

Voici quelques exemples d'utilisation courants de la commande find :

1. Rechercher un fichier par nom : Pour rechercher un fichier spécifique par son nom, utilisez l'option -name suivie du nom du fichier entre guillemets. Par exemple, pour trouver tous les fichiers nommés mon_fichier.txt dans le répertoire courant et ses sous-répertoires, vous pouvez utiliser :

find . -name "mon_fichier.txt"

2. Rechercher des fichiers par extension : Vous pouvez rechercher des fichiers par extension en utilisant -name avec un modèle d'extension. Par exemple, pour trouver tous les fichiers avec l'extension .log dans le répertoire courant et ses sous-répertoires :

find . -name "*.log"

3. Rechercher des fichiers par taille : Vous pouvez rechercher des fichiers en fonction de leur taille en utilisant l'option -size. Par exemple, pour trouver tous les fichiers de plus de 1 Mo dans le répertoire courant et ses sous-répertoires :

find . -size +1M

4. Rechercher des fichiers par date de modification : Vous pouvez rechercher des fichiers en fonction de leur date de modification en utilisant l'option -mtime. Par exemple, pour trouver tous les fichiers modifiés il y a moins de 7 jours :

find . -mtime -7

5. Rechercher des répertoires vides : Pour trouver tous les répertoires vides dans un chemin donné, vous pouvez utiliser l'option -type dd signifie répertoire. Par exemple, pour rechercher des répertoires vides dans le répertoire courant :

find . -type d -empty

6. Exécuter une action sur les fichiers trouvés : Vous pouvez exécuter une action (comme supprimer, déplacer, renommer, etc.) sur les fichiers ou répertoires trouvés en utilisant l'option -exec. Par exemple, pour supprimer tous les fichiers avec l'extension .tmp dans le répertoire courant et ses sous-répertoires :

find . -name "*.tmp" -exec rm {} \;

L'argument {} est remplacé par chaque fichier trouvé et \; indique la fin de la commande à exécuter.

Ces exemples illustrent quelques-unes des nombreuses possibilités offertes par la commande find. Elle est extrêmement polyvalente et peut être utilisée pour répondre à une grande variété de besoins de recherche de fichiers et de répertoires dans un système de fichiers Unix ou Linux.

locate

La commande locate permet de rechercher rapidement des fichiers et des répertoires dans tout le système de fichiers en utilisant une base de données d'index pré-générée. Contrairement à la commande find, qui effectue une recherche en temps réel, locate interroge la base de données d'index, ce qui rend les recherches beaucoup plus rapides. Cependant, cela signifie que locate n'est pas en temps réel et ne reflète pas immédiatement les changements dans le système de fichiers.

La base de données locate est mise à jour périodiquement par un processus système (généralement via une tâche planifiée). Si vous souhaitez mettre à jour la base de données manuellement pour refléter les modifications récentes du système de fichiers, vous pouvez utiliser la commande updatedb en tant qu'utilisateur root :

sudo updatedb

Voici comment utiliser la commande locate :

Syntaxe de base de la commande locate :

locate [options] motif
  • motif : Le motif de recherche que vous souhaitez utiliser pour trouver des fichiers et des répertoires.
  • options : Des options facultatives pour personnaliser la recherche.

Exemples d'utilisation courante de la commande locate :

1. Rechercher un fichier par nom : Pour rechercher un fichier spécifique par son nom, utilisez simplement locate suivi du nom du fichier ou d'un motif. Par exemple, pour trouver tous les fichiers ayant example dans leur nom :

locate example

2. Rechercher un fichier par expression régulière : Vous pouvez également utiliser des expressions régulières avec locate pour des recherches plus avancées. Par exemple, pour trouver tous les fichiers dont le nom commence par file et se termine par un nombre de 1 à 3 chiffres :

locate '^file[0-9]{1,3}$'

3. Limiter la recherche à un répertoire spécifique : Par défaut, locate recherche dans tout le système de fichiers. Si vous souhaitez limiter la recherche à un répertoire spécifique, vous pouvez spécifier le chemin en tant qu'argument. Par exemple, pour rechercher tous les fichiers avec le nom example dans le répertoire /home/utilisateur :

locate /home/utilisateur/example

4. Utiliser des options pour personnaliser la recherche : locate offre différentes options pour personnaliser la recherche, telles que l'ignorance de la casse (-i), la recherche récursive (-r), l'affichage du nombre de résultats (-c), etc.

grep

La commande grep permet de rechercher des lignes de texte dans des fichiers ou des flux de données en utilisant des expressions régulières ou des motifs de recherche. grep est un outil extrêmement puissant pour extraire des informations spécifiques à partir de fichiers texte ou de la sortie d'autres commandes.

Voici la syntaxe de base de la commande grep :

grep [options] motif [fichiers...]
  • motif : Le motif de recherche que vous souhaitez trouver dans le texte.
  • fichiers : Une liste facultative de fichiers dans lesquels vous souhaitez effectuer la recherche. Si vous n'indiquez pas de fichiers, grep lira l'entrée standard (généralement le texte fourni via la ligne de commande ou une autre commande) pour effectuer la recherche.

Voici quelques exemples d'utilisation courante de la commande grep :

1. Rechercher un motif dans un fichier : Pour rechercher un motif spécifique dans un fichier, utilisez simplement grep suivi du motif et du nom du fichier. Par exemple, pour trouver toutes les occurrences du mot exemple dans le fichier fichier.txt :

grep "exemple" fichier.txt

2. Rechercher un motif dans plusieurs fichiers : Vous pouvez rechercher un motif dans plusieurs fichiers en spécifiant une liste de fichiers après le motif. Par exemple, pour trouver toutes les occurrences du mot erreur dans les fichiers fichier1.txt, fichier2.txt et fichier3.txt :

grep "erreur" fichier1.txt fichier2.txt fichier3.txt

3. Utilisation d'expressions régulières : grep prend en charge les expressions régulières pour des recherches plus avancées. Par exemple, pour trouver toutes les lignes commençant par Erreur (en ignorant la casse) dans un fichier :

grep -i "^Erreur" fichier.txt

4. Recherche récursive dans des répertoires : Vous pouvez effectuer une recherche récursive dans un répertoire en utilisant l'option -r (ou -R). Par exemple, pour rechercher le motif recherche dans tous les fichiers de tous les sous-répertoires du répertoire courant :

grep -r "recherche" .

5. Affichage du numéro de ligne : grep peut afficher le numéro de ligne de chaque correspondance à l'aide de l'option -n. Par exemple, pour afficher toutes les occurrences du mot important dans un fichier avec les numéros de ligne correspondants :

grep -n "important" fichier.txt

6. Utilisation avec des pipelines : grep est souvent utilisé avec des pipelines pour traiter la sortie d'autres commandes. Par exemple, pour rechercher tous les fichiers contenant le mot erreur dans un répertoire donné et les afficher :

find /chemin/vers/repertoire -type f -exec grep -l "erreur" {} \;

Enchainer des commandes avec les pipe

Un pipe (tube ou tuyau en anglais) est un outil qui permet de connecter la sortie standard d'une commande avec l'entrée standard d'une autre commande. Cela permet de chaîner plusieurs commandes, le résultat de l'une formant les données d'entrée de la suivante.

Pour créer un pipe entre 2 commandes, il suffit d'écrire les deux commandes séparées pour un caractère | (que l'on appelle le pipe).

Exemple :

ls -R $HOME | less

L'enchainement de ces deux commandes liste le contenu de votre répertoire utilisateur et envoie la sortie vers la commande less pour en paginer le résultat. Vous verrez d'autres exemples dans les commandes qui vont suivre.

Contrôle de taches avec les commandes fg, bg et jobs

Un tache est un processus géré par le shell. Chaque tache se voit attribuer un ID de tâche. Une tache étant un processus, chaque tache est associée à un PID. Il existe trois types d'états de job :

  • Premier plan : lorsque vous entrez une commande dans une fenêtre de terminal, la commande tourne jusqu'à ce qu'elle se termine. C'est un travail au premier plan.
  • Arrière-plan : Lorsque vous saisissez le caractère & à la fin d'une ligne de commande.. L'invite du shell s'affiche immédiatement après que vous ayez appuyé sur [Retour]. Ceci est un exemple de travail en arrière-plan.
  • Arrêté : Si vous appuyez sur [Ctrl] + [Z] pour une tâche qui est au premier plan ou si vous entrez la commande d'arrêt pour une tâche en arrière-plan, la tâche s'arrête. Ce travail est appelé travail arrêté.

La commande jobs

La commande linux jobs retourne la liste des id de jobs et leur état :

jobs
[1]  + suspended  sleep 5000

La commande fg

La commande fg %id passe une tache au premier plan.

La commande bg

La commande bg %id passe une tache en arrière-plan.

Démonstration

Lançons une commande simplement la commande sleep 5000 et appuyez sur les touches [Ctrl] + [Z]. Le shell nous retourne un ID :

sleep 5000
^Z
[1]  + 865006 suspended  sleep 5000

On récupère l'id du job ainsi que son PID. Pour lancer directement une commande en arrière-plan, on aurait dû le faire au moyen de la commande sleep 5000 &.

Si on tape la commande jobs :

jobs
[1]  + suspended  sleep 5000

Shell nous retourne la tache 1 qui est arrêtée. Passons-la en arrière-plan :

bg %1
[1]  + 865006 continued  sleep 5000

La tâche passe en arrière-plan. Repassons-la au premier plan :

[1]  + 865006 running    sleep 5000

Le shell attend désormais la fin de la commande pour nous rendre la main.

Plus loin

Nous avons vu dans ce chapitre, ce que nous allons appeler des commandes basiques plus utiliser dans des tâches dites d'exploitation. Dans le chapitre suivant, nous allons voir des commandes permettant d'administrer des serveurs Linux.