Aller au contenu principal

Cours · L1

Unix & Shell

Progression du module

Points d’expérience : XPSérie de jours consécutifs : · —Progression du module : — / —compris

#Unix et shell

Le shell est un langage pour parler à votre machine. Là où une interface graphique propose des boutons, le shell offre des mots et des combinaisons. L'objectif de ce module est de vous rendre autonome pour naviguer, manipuler des fichiers, automatiser des tâches répétitives et diagnostiquer des problèmes en quelques commandes lisibles.

#Prérequis et objectifs

Aucune connaissance préalable n'est requise: un terminal Linux, macOS ou WSL suffit. À la fin du module, vous saurez:

  • vous repérer dans l'arborescence et lire l'aide des commandes;
  • composer des pipelines et rediriger les flux d'entrée et de sortie;
  • interpréter et modifier les permissions d'un fichier;
  • piloter des processus et des jobs depuis le terminal;
  • écrire un script Bash robuste et débogable;
  • vous connecter à une machine distante avec SSH, y transférer des fichiers et créer un tunnel.

#Pourquoi apprendre le shell ?

Imaginez qu'on vous demande d'extraire d'un gros journal applicatif les lignes d'erreur du jour, de les trier par fréquence et de les envoyer à un collègue. En interface graphique, c'est fastidieux. En shell, c'est une phrase: on lit, on filtre, on trie, on redirige. Le shell excelle quand il s'agit de composer de petits outils spécialisés pour accomplir une tâche plus grande. Cette compétence traverse tout le métier: déploiement, données, supervision, sécurité.

#Premiers pas: se repérer et lire l'aide

Une session commence par un prompt, par exemple antoine@machine:~$. Tapez pwd pour savoir où vous êtes, puis ls pour voir ce que contient le répertoire courant. La plupart des commandes documentent leur propre usage: man ls ouvre le manuel, ls --help affiche un résumé.

bashbash

1# Où suis-je ?2pwd3# Observation attendue: /home/antoine4 5# Que contient le dossier courant, avec détails lisibles ?6ls -lah7 8# Changer de dossier, puis revenir en arrière9cd Documents10cd -    # retourne au répertoire précédent

-l affiche une ligne par fichier (droits, propriétaire, taille), -a inclut les fichiers cachés, -h humanise les tailles. Ces drapeaux se combinent: -lah.

#Lire, filtrer, enchaîner

Une commande produit souvent un flux de texte. Le caractère | (tube) transmet ce flux à la commande suivante, comme une phrase à deux verbes.

bashbash

1head -n 5 gros-fichier.log   # 5 premières lignes sans ouvrir d'éditeur

On peut prolonger la phrase: convertir en minuscules (tr 'A-Z' 'a-z'), trier (sort), dédoublonner (uniq). Ces outils deviennent des briques que l'on assemble, au lieu de chercher une commande magique unique.

#Exercice guidé (10 minutes)

But: compter combien de fois chaque message d'erreur apparaît dans app.log, puis afficher les trois plus fréquents.

Préparez un fichier d'essai:

bashbash

1printf '%s\n' "[10:00] error timeout" "[10:01] ok" "[10:02] error timeout" \2  "[10:03] error disk full" "[10:04] error timeout" > app.log

Piste: filtrer (grep), extraire le message (cut), trier (sort), compter (uniq -c), trier par nombre décroissant (sort -nr), garder les trois premiers (head).

Correction:

bashbash

1grep "error" app.log | cut -d" " -f2- | sort | uniq -c | sort -nr | head -n 3

Observation attendue:

texttext

1   3 error timeout2   1 error disk full

Ne mémorisez pas la ligne; comprenez le film: chaque étape transforme un flux de texte en un flux plus proche du résultat. Vérification: la première colonne affiche 3 puis 1, et le total des erreurs vaut 4.

#Parcours du module

  1. Bases du shell: commandes, codes de sortie, redirections, variables.
  2. Système de fichiers et permissions: arborescence, droits rwx, umask.
  3. Processus et jobs: premier plan, arrière-plan, signaux.
  4. Scripts Bash fiables: garde-fous, quoting, nettoyage.
  5. Réseau et SSH: clés, transferts, tunnels.

Commencez par « Bases du shell », puis suivez l'ordre: chaque chapitre réutilise les réflexes du précédent.

#Le cours officiel dont ce module s'inspire

Ce module reprend la matière de l'UE SPUF201 « Système 1 : utilisation d'Unix et programmation shell » (Licence, portail Sciences et technologies, semestre 2, Université Côte d'Azur, campus Valrose). Le fonds documentaire de cette UE comprend sept chapitres de cours, six feuilles de travaux pratiques, des mémos Unix et Emacs, des fiches de révision et quatre sujets d'épreuve. L'ordre du cours officiel est le suivant.

  1. Introduction — historique, composants d'un système informatique, responsabilités du noyau, structure en couches, outils de base.
  2. Fichiers et répertoires — arborescence, chemins, protections, liens, jokers, contenu des fichiers.
  3. Installation d'une distribution GNU/Linux — distributions, partitions, systèmes de fichiers, montage, administration, virtualisation.
  4. Réseaux, adresses, protocoles — graphe, Ethernet, IP, DNS, TCP, protocoles de communication, courrier électronique.
  5. Le shell — utilisation interactive, redirections, analyse de la ligne de commande, scripts, paramètres et substitutions, adaptation du shell.
  6. Les outils d'Unix — recherche d'information, utilitaires sur les processus et les fichiers, filtres et éditeurs.
  7. Connexion et communication — telnet, rlogin, rsh, SSH, fichiers distants, HTTP et HTML.

Plan du cours · 7 sections

Sections du cours