Cours simple : Linux et ses principes fondamentaux
1) Qu’est-ce que Linux ?
- Linux est le noyau (kernel) : il gère mémoire, processeur, périphériques et processus.
- Un système complet s’appelle souvent GNU/Linux : noyau Linux + utilitaires GNU + logiciels.
- Une distribution (Ubuntu, Debian, Fedora…) = noyau + gestionnaire de paquets + configuration + dépôts de logiciels.
Exemple : Ubuntu LTS = version stable à support long.
2) Architecture simplifiée
Matériel → Noyau (Linux) → Espace utilisateur
- Bibliothèques (libc, etc.)
- Processus (programmes), services en arrière-plan (daemons, gérés par systemd sur Ubuntu)
- Shell (ex.
bash
) dans un terminal pour exécuter des commandes - Éventuellement un environnement graphique (GNOME, KDE)
3) Principes fondateurs
- Multi-utilisateur et multitâche
- Principe du moindre privilège : travailler en utilisateur normal ;
root
uniquement si nécessaire (viasudo
). - « Tout est fichier » : fichiers, répertoires, périphériques (
/dev
), infos noyau (/proc
,/sys
). - Composabilité UNIX : petits outils spécialisés chaînables (pipeline).
- Transparence : configurations texte (
/etc
), journaux (/var/log
).
4) Arborescence standard (FHS)
/
: racine/home/
: dossiers des utilisateurs/etc/
: configuration système et services/var/
: données variables (journaux, caches…)/usr/
: logiciels et données installés par la distribution/bin/
,/sbin/
: exécutables essentiels/tmp/
: fichiers temporaires/dev/
: périphériques comme fichiers/proc/
,/sys/
: pseudo-systèmes exposant l’état du noyau/matériel
Conseil : pour les travaux en classe, rester dans votre dossier personnel /home/<vous>
.
5) Processus et services
- Un processus = un programme en cours d’exécution (PID = identifiant).
- Un service/daemon = processus en arrière-plan (réseau, impression, logs…).
- Sur Ubuntu, systemd pilote les services (démarrage, arrêt, journalisation).
6) Gestion des logiciels (Ubuntu)
- Format de paquet : .deb
- Outils : APT (
apt
) pour installer/mettre à jour depuis des dépôts signés ; dpkg (bas niveau) pour manipuler des.deb
. - Mises à jour régulières ; versions LTS privilégiant la stabilité.
7) Droits et sécurité (bases)
- Chaque fichier a un propriétaire, un groupe et des permissions : lecture (
r
), écriture (w
), exécution (x
) pour u/g/o (user/group/others). - N’utiliser
root
que ponctuellement (viasudo
). - Bon réflexe : lire l’aide (
man commande
oucommande --help
) et faire des copies avant modification.
8) Vocabulaire utile
- Kernel (noyau) : cœur de l’OS
- Shell : interpréteur de commandes (bash)
- Terminal : fenêtre/console pour le shell
- Distribution : assemblage cohérent du système
- FHS : convention de l’arborescence
- LTS : support long terme
- Daemon : service en arrière-plan
Points clés (check-list)
- Différence noyau / distribution
- Configs dans
/etc
et journaux dans/var/log
- Travail en utilisateur, pas en
root
par défaut - Droits r/w/x et propriétaires u/g/o
- Tout est fichier (y compris
/dev
,/proc
)
Partie 2 — 30 commandes Linux les plus employées (Ubuntu)
Conseil sécurité : travaillez dans votre dossier personnel (ex. ~/atelier-linux
) et évitez sudo
pour ces exercices.
1) pwd
Rôle : afficher le chemin du répertoire courant.
Options de base : (aucune courante).
# Exemple 1
pwd
# Exemple 2
cd ~ && pwd
2) ls
Rôle : lister fichiers et dossiers.
Options : -l
(détails), -a
(cachés), -h
(tailles lisibles).
# Exemple 1
ls -l
# Exemple 2
ls -alh
3) cd
Rôle : changer de répertoire.
Options utiles : cd ..
(parent), cd -
(retour), cd ~
(HOME).
# Exemple 1
cd ~/Documents
# Exemple 2
cd .. && cd -
4) mkdir
Rôle : créer des dossiers.
Option : -p
(crée l’arborescence complète).
# Exemple 1
mkdir demo
# Exemple 2
mkdir -p projets/web/api
5) rmdir
Rôle : supprimer un dossier vide.
Options : (aucune courante).
# Exemple 1
mkdir vide && rmdir vide
# Exemple 2
rmdir mon_dossier_vide
6) touch
Rôle : créer un fichier vide ou mettre à jour sa date.
Options : (simples par défaut).
# Exemple 1
touch notes.txt
# Exemple 2
touch logs/app.log
7) cp
Rôle : copier fichiers/dossiers.
Options : -i
(confirmer), -r
(récursif).
# Exemple 1
cp notes.txt notes.copie.txt
# Exemple 2
cp -r projets projets_backup
8) mv
Rôle : déplacer/renommer.
Option : -i
(confirmer).
# Exemple 1
mv notes.copie.txt notes.final.txt
# Exemple 2
mv projets_backup archives/
9) rm
Rôle : supprimer fichiers/dossiers.
Options : -i
(interactif), -r
(récursif). ⚠️ Prudent !
# Exemple 1 (prudent)
rm -i notes.final.txt
# Exemple 2 (récursif, à éviter si doute)
rm -r archives_vieilles
10) echo
Rôle : afficher une chaîne (souvent combiné aux redirections >
, >>
).
Options : (simples par défaut).
# Exemple 1
echo "Bonjour SLAM"
# Exemple 2 (écrire dans un fichier)
echo "Ligne 1" > notes.txt
11) nano
Rôle : éditeur texte simple en terminal.
Astuce : enregistrer Ctrl+O, quitter Ctrl+X.
# Exemple 1
nano notes.txt
# Exemple 2
nano scripts/hello.sh
12) cat
Rôle : afficher/concaténer des fichiers.
Options : (simples par défaut).
# Exemple 1
cat notes.txt
# Exemple 2
cat a.txt b.txt > c.txt
13) less
Rôle : lire un fichier page par page.
Astuce : quitter q, rechercher /mot
.
# Exemple 1
less notes.txt
# Exemple 2
less /var/log/syslog
14) head
Rôle : afficher le début d’un fichier.
Option : -n N
(N lignes).
# Exemple 1
head notes.txt
# Exemple 2
head -n 5 notes.txt
15) tail
Rôle : afficher la fin d’un fichier.
Options : -n N
(N lignes), -f
(suivre en temps réel).
# Exemple 1
tail -n 3 notes.txt
# Exemple 2
tail -f /var/log/syslog
16) wc
Rôle : compter lignes/mots/octets.
Options : -l
(lignes), -w
(mots), -c
(octets).
# Exemple 1
wc -l notes.txt
# Exemple 2
wc -w notes.txt
17) grep
Rôle : chercher du texte dans des fichiers.
Options : -n
(numéros), -i
(insensible casse), -R
(récursif).
# Exemple 1
grep -n "Erreur" notes.txt
# Exemple 2
grep -Ri "todo" .
18) find
Rôle : rechercher des fichiers/dossiers par critères.
Options : -type f|d
, -name
, -maxdepth
.
# Exemple 1
find . -type f -name "*.txt"
# Exemple 2
find . -maxdepth 2 -type d -name "api"
19) sort
Rôle : trier des lignes.
Options : -r
(inverse), -n
(numérique).
# Exemple 1
sort liste.txt
# Exemple 2
sort -nr scores.txt
20) uniq
Rôle : supprimer doublons consécutifs (souvent après sort
).
Options : -c
(compter), -d
(afficher doublons).
# Exemple 1
sort noms.txt | uniq
# Exemple 2
sort noms.txt | uniq -c
21) cut
Rôle : extraire des colonnes.
Options : -d
(séparateur), -f
(champs).
# Exemple 1
cut -d',' -f1 users.csv
# Exemple 2
cut -d';' -f2-3 data.csv
22) chmod
Rôle : modifier les permissions (r, w, x) pour u/g/o.
Formes : symbolique (u+x
) ou octale (644
, 755
).
# Exemple 1
chmod u+x scripts/hello.sh
# Exemple 2
chmod 644 notes.txt
23) df
Rôle : afficher l’espace disque des systèmes de fichiers.
Option : -h
(lisible).
# Exemple 1
df -h
# Exemple 2
df -h /home
24) du
Rôle : taille des fichiers/dossiers.
Options : -s
(synthèse), -h
(lisible).
# Exemple 1
du -sh .
# Exemple 2
du -sh ~/Documents/*
25) tar
Rôle : archiver (et compresser avec gzip).
Options courantes : czf
(créer+gzip+fichier), tzf
(lister), xzf
(extraire).
# Exemple 1 (créer)
tar czf sauvegarde.tgz projets notes
# Exemple 2 (extraire)
tar xzf sauvegarde.tgz -C restore/
26) ps
Rôle : lister processus.
Options : aux
(tous), -ef
(format BSD/System V).
# Exemple 1
ps aux | head
# Exemple 2
ps aux | grep bash
27) top
Rôle : observer en temps réel les processus.
Astuce : quitter q, trier avec P (CPU) / M (RAM).
# Exemple 1
top
# Exemple 2
top # puis appuyez sur M pour trier par mémoire
28) kill
Rôle : envoyer un signal à un processus (arrêt).
Options : par défaut TERM
(15), forcé -9
(KILL).
# Exemple 1 (terminer proprement)
kill 12345
# Exemple 2 (forcer si bloqué)
kill -9 12345
29) ping
Rôle : tester la connectivité réseau.
Option : -c N
(nombre d’échos).
# Exemple 1
ping -c 2 1.1.1.1
# Exemple 2
ping -c 3 example.org
30) man
Rôle : afficher le manuel d’une commande.
Astuce : rechercher /mot
, quitter q.
# Exemple 1
man grep
# Exemple 2
man find
Mise en pratique guidée (TP)
Objectif : enchaîner les commandes dans un scénario simple. Regarder à chaque fois le résultat. Soyez curieux ! Changez les paramètres pour voir.
TP Linux – Mise en pratique (débutant)
Objectifs pédagogiques
- Savoir se repérer dans l’arborescence et manipuler des fichiers simples.
- Rechercher et filtrer des informations en ligne de commande.
- Comprendre les permissions de base et exécuter un script simple.
- Mesurer l’espace disque et créer/extraire une archive.
- Observer des processus et tester la connectivité réseau.
Pré-requis
- Terminal disponible (GNOME Terminal) ; clavier : quitter
less
/man
avec q, quitternano
avec Ctrl+X. - Connaître le dossier personnel
/home/<utilisateur>
.
Étape 0 — Mise en place
cd ~
mkdir -p ~/atelier-linux && cd ~/atelier-linux
pwd # attendu : /home/<utilisateur>/atelier-linux
whoami # votre identifiant
clear
Étape 1 — Arborescence & fichiers
Commandes : ls
, cd
, mkdir
, rmdir
, touch
, echo
, nano
, cat
, wc
, head
, tail
, less
# créer structure
mkdir -p projets/web/{api,frontend} notes logs
ls -alh
# créer des fichiers
touch notes/todo.txt projets/web/api/main.py projets/web/frontend/index.html
echo "Faire le TP Linux" > notes/todo.txt
echo "Relire le cours Linux" >> notes/todo.txt
cat notes/todo.txt
# éditer (ajoutez une 3e ligne, puis Ctrl+O, Entrée, Ctrl+X)
nano notes/todo.txt
# compter/afficher
wc -l notes/todo.txt # nombre de lignes
head -n 1 notes/todo.txt # première ligne
tail -n 1 notes/todo.txt # dernière ligne
less notes/todo.txt # lecture confortable, quitter : q
# dossier vide : créer puis supprimer
mkdir vide && rmdir vide
Point de contrôle 1 (à montrer)
- Sortie de
ls -alh
à la racine de~/atelier-linux
. - Contenu de
notes/todo.txt
(3 lignes minimum).
Étape 2 — Copier, renommer, supprimer
Commandes : cp
, mv
, rm -i
cp notes/todo.txt notes/todo.copie.txt
mv notes/todo.copie.txt notes/todo.final.txt
rm -i notes/todo.final.txt # confirmez (y/n)
Point de contrôle 2
- La copie
todo.final.txt
a été supprimée,todo.txt
existe toujours.
Étape 3 — Rechercher & traiter du texte
Commandes : grep
, find
, sort
, uniq
, cut
# jeu de données simple
echo -e "alice,admin\nbob,user\ncarol,user\nbob,user" > users.csv
# extraire la colonne des rôles, trier et compter les occurrences
cut -d',' -f2 users.csv | sort | uniq -c
# recherche textuelle
grep -n "Relire" notes/todo.txt # afficher la ligne contenant "Relire"
# recherches de fichiers
find . -type f -name "*.py"
find . -maxdepth 2 -type d -name "api"
Point de contrôle 3
- Sortie du pipeline
cut | sort | uniq -c
(compte par rôle attendu). - Liste des
.py
trouvés.
Étape 4 — Permissions & script
Commandes : ls -l
, chmod
# inspecter les droits d'un fichier
ls -l notes/todo.txt # ex : -rw-r--r--
# créer un petit script
mkdir -p scripts
echo -e "#!/usr/bin/env bash\necho Bonjour $USER" > scripts/hello.sh
# le rendre exécutable et l'exécuter
chmod u+x scripts/hello.sh
./scripts/hello.sh # attendu : "Bonjour <utilisateur>"
Point de contrôle 4
- Permissions de
scripts/hello.sh
: le bitx
pour l’utilisateur est présent (-rwx------
ou similaire). - Exécution du script affiche bien le message.
Étape 5 — Disque & archives
Commandes : df
, du
, tar
# espace disque global et taille du dossier d'atelier
df -h | head
du -sh .
# créer une archive gzip de "projets" et "notes"
tar czf sauvegarde.tgz projets notes
# vérifier le contenu de l'archive
tar tzf sauvegarde.tgz | head
# extraire dans un dossier restore/
mkdir -p restore
tar xzf sauvegarde.tgz -C restore
Point de contrôle 5
- Fichier
sauvegarde.tgz
présent et listable avectar tzf
. - Dossier
restore/
rempli après extraction.
Étape 6 — Processus & réseau
Commandes : ps
, top
(lecture), kill
, ping
# lancer un processus en arrière-plan
sleep 120 &
# retrouver son PID et le stopper proprement
ps aux | grep sleep
# Remplacez <PID> ci-dessous par le numéro affiché (colonne PID)
kill <PID>
# observer (lecture) puis quitter
top # quitter : q
# tester la connectivité
ping -c 2 example.org
Point de contrôle 6
- Le processus
sleep
a bien été arrêté (ps
ne l’affiche plus). - Ping renvoie 2 réponses sans perte.
Étape 7 — Aide & historique
Commandes : man
, history
man grep # consulter l'aide (rechercher /mot, quitter q)
history | tail -n 20
Livrables (à rendre)
- Capture de
pwd
+ls -alh
à la racine de~/atelier-linux
. - Contenu de
notes/todo.txt
(3 lignes min). - Sortie du pipeline
cut | sort | uniq -c
surusers.csv
. - Exécution de
./scripts/hello.sh
(copie de la sortie). - Listing de l’archive (
tar tzf sauvegarde.tgz | head
). - Les 15–20 dernières lignes de
history
.
.
Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.