🐧
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
| Distribution | Base | Usage | Gestionnaire |
|---|---|---|---|
| Ubuntu | Debian | Desktop, Serveur | apt |
| Debian | - | Serveur, Stabilite | apt |
| Raspberry Pi OS | Debian | Raspberry Pi | apt |
| Fedora | Red Hat | Desktop, Dev | dnf |
| CentOS / Rocky | Red Hat | Serveur Enterprise | dnf/yum |
| Arch Linux | - | Avance, Rolling | pacman |
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
Permissions | Liens | Proprietaire | Groupe | Taille | Date | Nom
-rw-r--r-- 1 user group 1024 Jan 15 10:30 fichier.txtPermissions | Liens | Proprietaire | Groupe | Taille | Date | Nom
Chemins Absolus vs Relatifs
| Type | Description | Exemple |
|---|---|---|
| Absolu | Commence par / (racine) | /home/pi/documents |
| Relatif | Depuis 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
| Octal | Binaire | Permissions | Description |
|---|---|---|---|
7 | 111 | rwx | Lecture + Ecriture + Execution |
6 | 110 | rw- | Lecture + Ecriture |
5 | 101 | r-x | Lecture + Execution |
4 | 100 | r-- | Lecture seule |
0 | 000 | --- | 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
| Distribution | Gestionnaire | Installer | Mettre a jour |
|---|---|---|---|
| Debian/Ubuntu | apt | apt install pkg | apt update && apt upgrade |
| Fedora/RHEL | dnf | dnf install pkg | dnf upgrade |
| Arch Linux | pacman | pacman -S pkg | pacman -Syu |
| Alpine | apk | apk add pkg | apk 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