Linux & Commandes Shell

Administration Systeme | Resume de Cours Complet

🐧 GNU/Linux 💻 Terminal Bash
🐧

Chapitre 1 : Introduction a Linux

Histoire, distributions et concepts fondamentaux

Qu'est-ce que Linux ?

Linux est un systeme d'exploitation libre et open source cree en 1991 par Linus Torvalds. Il est base sur le noyau Linux et suit la philosophie Unix.

💡
GNU/Linux Le systeme complet est souvent appele GNU/Linux car il combine le noyau Linux avec les outils GNU developpes par Richard Stallman.

Distributions Populaires

DistributionBaseUsageGestionnaire
UbuntuDebianDesktop, Serveurapt
Debian-Serveur, Stabiliteapt
Raspberry Pi OSDebianRaspberry Piapt
FedoraRed HatDesktop, Devdnf
CentOS / RockyRed HatServeur Enterprisednf/yum
Arch Linux-Avance, Rollingpacman

Structure du Systeme de Fichiers

/                 # Racine du systeme
├── /bin           # Binaires essentiels (ls, cp, mv...)
├── /boot          # Fichiers de demarrage, noyau
├── /dev           # Fichiers de peripheriques
├── /etc           # Fichiers de configuration
├── /home          # Repertoires utilisateurs
├── /lib           # Bibliotheques partagees
├── /mnt           # Points de montage temporaires
├── /opt           # Logiciels optionnels
├── /proc          # Informations processus (virtuel)
├── /root          # Home de l'utilisateur root
├── /tmp           # Fichiers temporaires
├── /usr           # Programmes utilisateurs
└── /var           # Donnees variables (logs, cache)

Le Terminal et le Shell

Le terminal est l'interface texte pour interagir avec le systeme. Le shell (generalement Bash) est l'interpreteur de commandes.

user@hostname:~$ commande -options arguments

# Exemples de prompts :
pi@raspberrypi:~$     # Utilisateur normal
root@server:/etc#      # Utilisateur root (#)
📂

Chapitre 2 : Navigation dans le Systeme

Se deplacer et explorer l'arborescence

Commandes de Navigation

pwd                    # Print Working Directory - affiche le chemin actuel
cd /chemin             # Change Directory - se deplacer
cd ..                  # Remonter d'un niveau
cd ~                   # Aller au repertoire home
cd -                   # Retourner au repertoire precedent
cd                     # Sans argument = retour au home

Lister les Fichiers (ls)

ls                     # Liste simple
ls -l                  # Liste detaillee (permissions, taille, date)
ls -a                  # Afficher les fichiers caches (commencent par .)
ls -la                 # Combinaison -l et -a
ls -lh                 # Tailles lisibles (Ko, Mo, Go)
ls -R                  # Liste recursive (sous-dossiers)
ls -lt                 # Trier par date de modification
ls -lS                 # Trier par taille
📖
Lecture de ls -l -rw-r--r-- 1 user group 1024 Jan 15 10:30 fichier.txt
Permissions | Liens | Proprietaire | Groupe | Taille | Date | Nom

Chemins Absolus vs Relatifs

TypeDescriptionExemple
AbsoluCommence par / (racine)/home/pi/documents
RelatifDepuis le repertoire actuel./documents ou documents
# Symboles speciaux
.    # Repertoire actuel
..   # Repertoire parent
~    # Home de l'utilisateur (/home/user)
-    # Repertoire precedent (cd -)
📄

Chapitre 3 : Gestion des Fichiers

Creer, copier, deplacer, supprimer

Creer des Fichiers et Dossiers

touch fichier.txt      # Creer un fichier vide (ou MAJ date)
mkdir dossier           # Creer un repertoire
mkdir -p a/b/c         # Creer une arborescence complete
echo "texte" > fichier # Creer avec contenu (ecrase)
echo "texte" >> fichier # Ajouter a la fin (append)

Copier et Deplacer

cp source destination       # Copier un fichier
cp -r dossier/ dest/        # Copier recursivement (dossiers)
cp -i source dest           # Demander confirmation si existe
cp -v source dest           # Mode verbose (affiche les actions)

mv source destination       # Deplacer ou renommer
mv ancien.txt nouveau.txt   # Renommer un fichier
mv -i source dest           # Confirmation si ecrasement

Supprimer

rm fichier              # Supprimer un fichier
rm -r dossier/          # Supprimer recursivement
rm -f fichier           # Forcer (sans confirmation)
rm -rf dossier/         # Forcer recursivement ⚠️ DANGEREUX
rm -i fichier           # Demander confirmation
rmdir dossier           # Supprimer dossier VIDE uniquement
⚠️
Attention ! rm -rf / ou rm -rf * peut detruire tout le systeme ! Toujours verifier avant d'executer.

Afficher le Contenu

cat fichier             # Afficher tout le contenu
less fichier            # Afficher avec pagination (q pour quitter)
more fichier            # Pagination simple
head fichier            # Premieres 10 lignes
head -n 20 fichier     # Premieres 20 lignes
tail fichier            # Dernieres 10 lignes
tail -f fichier         # Suivre en temps reel (logs)
wc fichier              # Compter lignes, mots, caracteres
wc -l fichier           # Compter uniquement les lignes

Rechercher

find /chemin -name "*.txt"    # Chercher par nom
find . -type f                  # Chercher fichiers uniquement
find . -type d                  # Chercher dossiers uniquement
find . -size +10M               # Fichiers > 10 Mo

grep "motif" fichier           # Chercher dans un fichier
grep -r "motif" dossier/      # Chercher recursivement
grep -i "motif" fichier       # Ignorer la casse
grep -n "motif" fichier       # Afficher numeros de ligne
grep -v "motif" fichier       # Inverser (lignes SANS motif)
🔐

Chapitre 4 : Permissions et Propriete

Droits d'acces et gestion des utilisateurs

Comprendre les Permissions

# Format : -rwxrwxrwx
#          │└┬┘└┬┘└┬┘
#          │ │  │  └── Autres (o)
#          │ │  └───── Groupe (g)
#          │ └──────── Proprietaire (u)
#          └────────── Type (- fichier, d dossier, l lien)

# Signification :
r = read (lecture)     = 4
w = write (ecriture)   = 2
x = execute (execut.)  = 1
- = pas de permission  = 0
OctalBinairePermissionsDescription
7111rwxLecture + Ecriture + Execution
6110rw-Lecture + Ecriture
5101r-xLecture + Execution
4100r--Lecture seule
0000---Aucune permission

Modifier les Permissions (chmod)

# Mode symbolique
chmod u+x script.sh     # Ajouter execution au proprietaire
chmod g-w fichier       # Retirer ecriture au groupe
chmod o=r fichier       # Definir lecture seule pour autres
chmod a+r fichier       # Ajouter lecture a tous (all)

# Mode octal (le plus courant)
chmod 755 script.sh     # rwxr-xr-x (scripts executables)
chmod 644 fichier.txt   # rw-r--r-- (fichiers normaux)
chmod 700 secret/       # rwx------ (prive)
chmod 777 fichier       # rwxrwxrwx (tout le monde) ⚠️
chmod -R 755 dossier/  # Recursif sur dossier

Propriete (chown, chgrp)

chown user fichier           # Changer le proprietaire
chown user:group fichier     # Changer proprietaire et groupe
chown -R user dossier/      # Recursivement
chgrp group fichier          # Changer uniquement le groupe

Commande sudo

sudo (SuperUser DO) permet d'executer des commandes avec les privileges root (administrateur).

sudo commande           # Executer en tant que root
sudo -i                  # Ouvrir un shell root
sudo -u user commande  # Executer en tant qu'autre utilisateur
sudo !!                 # Repeter derniere commande avec sudo
⚙️

Chapitre 5 : Gestion des Processus

Surveiller et controler les programmes

Afficher les Processus

ps                      # Processus du terminal actuel
ps aux                  # Tous les processus (format BSD)
ps -ef                  # Tous les processus (format System V)
ps aux | grep nom      # Filtrer par nom

top                     # Moniteur temps reel (q pour quitter)
htop                    # Moniteur ameliore (si installe)

pgrep nom               # Trouver PID par nom
pidof programme         # PID d'un programme

Controler les Processus

kill PID                # Terminer un processus (SIGTERM)
kill -9 PID             # Forcer l'arret (SIGKILL)
killall nom             # Tuer par nom
pkill motif             # Tuer par motif de nom

# En arriere-plan
commande &              # Lancer en arriere-plan
jobs                    # Lister les jobs en arriere-plan
fg                      # Ramener au premier plan
bg                      # Continuer en arriere-plan
Ctrl+Z                  # Suspendre le processus actuel
Ctrl+C                  # Interrompre le processus actuel

Services (systemd)

sudo systemctl start service    # Demarrer
sudo systemctl stop service     # Arreter
sudo systemctl restart service  # Redemarrer
sudo systemctl status service   # Etat du service
sudo systemctl enable service   # Activer au demarrage
sudo systemctl disable service  # Desactiver au demarrage
🌐

Chapitre 6 : Commandes Reseau

Configuration et diagnostic reseau

Configuration IP

ip addr                 # Afficher les interfaces (moderne)
ip a                    # Alias court
ifconfig                # Afficher interfaces (ancien)
hostname -I             # Adresse IP locale uniquement

ip link set eth0 up    # Activer une interface
ip link set eth0 down  # Desactiver une interface

Diagnostic Reseau

ping google.com         # Tester la connectivite
ping -c 4 192.168.1.1   # 4 pings seulement

traceroute google.com   # Tracer le chemin reseau
tracepath google.com    # Alternative sans root

netstat -tuln           # Ports en ecoute
ss -tuln                # Alternative moderne a netstat

nslookup google.com     # Resolution DNS
dig google.com          # Requete DNS detaillee

curl https://example.com # Telecharger une page
wget https://example.com/file # Telecharger un fichier

SSH (Secure Shell)

ssh user@192.168.1.10        # Connexion SSH
ssh -p 2222 user@host        # Port personnalise
ssh-keygen                       # Generer cles SSH
ssh-copy-id user@host         # Copier cle publique

scp fichier user@host:/chemin   # Copier vers serveur
scp user@host:/chemin local    # Copier depuis serveur
scp -r dossier/ user@host:    # Copier dossier
📦

Chapitre 7 : Gestion des Paquets

Installation et mise a jour des logiciels

APT (Debian/Ubuntu/Raspberry Pi OS)

sudo apt update              # Mettre a jour la liste des paquets
sudo apt upgrade             # Mettre a jour les paquets installes
sudo apt full-upgrade        # Mise a jour complete (peut supprimer)

sudo apt install paquet     # Installer un paquet
sudo apt remove paquet      # Desinstaller (garde config)
sudo apt purge paquet       # Desinstaller + supprimer config
sudo apt autoremove          # Supprimer paquets orphelins

apt search mot-cle           # Rechercher un paquet
apt show paquet              # Informations sur un paquet
apt list --installed         # Lister les paquets installes

Autres Gestionnaires

DistributionGestionnaireInstallerMettre a jour
Debian/Ubuntuaptapt install pkgapt update && apt upgrade
Fedora/RHELdnfdnf install pkgdnf upgrade
Arch Linuxpacmanpacman -S pkgpacman -Syu
Alpineapkapk add pkgapk upgrade
📜

Chapitre 8 : Scripts Bash

Automatisation et programmation shell

Structure d'un Script

#!/bin/bash
# Mon premier script

# Variables
NOM="Linux"
VERSION=$(uname -r)

# Affichage
echo "Bienvenue sur $NOM"
echo "Version du noyau: $VERSION"

# Condition
if [ -f /etc/passwd ]; then
    echo "Le fichier existe"
fi

# Boucle
for i in 1 2 3; do
    echo "Iteration $i"
done

Variables et Arguments

# Variables
VAR="valeur"           # Pas d'espace autour de =
echo $VAR              # Utiliser la variable
echo "${VAR}_suite"    # Avec accolades

# Arguments du script
$0                     # Nom du script
$1, $2, $3...          # Arguments positionnels
$#                     # Nombre d'arguments
$@                     # Tous les arguments
$?                     # Code retour derniere commande

# Substitution de commande
DATE=$(date +%Y-%m-%d)
FILES=$(ls -1 | wc -l)

Tests et Conditions

# Tests sur fichiers
[ -f fichier ]    # Fichier existe
[ -d dossier ]    # Dossier existe
[ -r fichier ]    # Fichier lisible
[ -w fichier ]    # Fichier modifiable
[ -x fichier ]    # Fichier executable

# Tests sur chaines
[ -z "$VAR" ]     # Chaine vide
[ -n "$VAR" ]     # Chaine non vide
[ "$A" = "$B" ]   # Egalite
[ "$A" != "$B" ]  # Difference

# Tests numeriques
[ $A -eq $B ]    # Egal (equal)
[ $A -ne $B ]    # Different (not equal)
[ $A -lt $B ]    # Inferieur (less than)
[ $A -gt $B ]    # Superieur (greater than)
[ $A -le $B ]    # Inferieur ou egal
[ $A -ge $B ]    # Superieur ou egal

Redirections et Pipes

# Redirections
commande > fichier     # Sortie vers fichier (ecrase)
commande >> fichier    # Sortie vers fichier (ajoute)
commande < fichier     # Entree depuis fichier
commande 2> erreurs    # Erreurs vers fichier
commande &> tout       # Sortie + erreurs
commande 2>/dev/null   # Ignorer les erreurs

# Pipes (chainer les commandes)
cat fichier | grep motif | wc -l
ps aux | grep apache | awk '{print $2}'
ls -la | sort -k5 -n   # Trier par taille

Executer un Script

# Rendre executable
chmod +x script.sh

# Executer
./script.sh            # Depuis le repertoire actuel
bash script.sh         # Avec bash explicite
source script.sh       # Dans le shell actuel
. script.sh            # Alias de source

8 Chapitres | Administration Systeme Linux