7 - Introduction à la ligne de commande Linux

7.1 - Les commandes utiles
- ls -l # Liste détaillée
- ls -la # Inclut les fichiers cachés
- stat fichier # Toutes les informations détaillées
- chmod 755 fichier # Modifier les permissions
- chown user:group fichier # Changer propriétaire/groupe
- umask # Masque de création par défaut
- getfacl fichier # ACL (Access Control Lists) avancées
Les systèmes de fichiers Linux offrent une gestion fine et sécurisée des accès, essentielle pour un système multi-utilisateurs !
7.2 - Pourquoi utiliser la ligne de commande ?
Sur Windows, vous êtes habitué à tout faire avec la souris : cliquer, glisser-déposer, naviguer dans les menus. Linux offre la même chose avec ses interfaces graphiques, mais la ligne de commande (aussi appelée terminal, console ou shell) dévoile la vraie puissance du système.
Les avantages de la ligne de commande :
- Rapidité : Une commande qui prend 2 secondes à taper peut remplacer 2 minutes de clics répétitifs.
- Puissance : Vous pouvez faire des choses impossibles ou très compliquées avec une interface graphique.
- Automatisation : Vous pouvez enregistrer vos commandes dans des scripts et les réexécuter à l'infini.
- Précision : Vous contrôlez exactement ce qui se passe, sans approximation.
- Universalité : Les mêmes commandes fonctionnent sur n'importe quel Linux, que ce soit un PC, un serveur ou un Raspberry Pi.
7.3 - Ouvrir le terminal
Sur Ubuntu/GNOME : Ctrl + Alt + T
Sur la plupart des distributions : Cherchez "Terminal" dans le menu des applications
Ce que vous voyez : marie@ordinateur:~$
Décryptage :
- marie : votre nom d'utilisateur
- ordinateur : nom de votre machine
- ~ : vous êtes dans votre dossier personnel (/home/marie)
- $ : invite de commande (devient # quand vous êtes administrateur)
7.4 - Les commandes de base
7.4.1 - pwd - Où suis-je ?
Print Working Directory : affiche le répertoire actuel
pwd
Résultat : /home/marie
7.4.2 - ls - Que contient ce dossier ?
List : affiche le contenu d'un répertoire
ls
Résultat : Documents Images Musique Téléchargements Vidéos
Variantes utiles :
- ls -l # Affichage détaillé (permissions, taille, date)
- ls -la # Inclut les fichiers cachés (commencent par un point)
- ls -lh # Tailles en format lisible (Ko, Mo, Go)
- ls -lt # Trié par date, le plus récent en premier
7.4.3 cd - Se déplacer
Change Directory : changer de répertoire
cd Documents # Aller dans Documents
cd .. # Remonter d'un niveau
cd # Retourner à votre dossier personnel
cd /etc # Aller directement vers /etc
cd ~/Images # ~ représente votre dossier personnel
7.4.4 - cat - Afficher un fichier
Concatenate : affiche le contenu d'un fichier
cat fichier.txt
7.4.5 - mkdir - Créer un dossier
Make Directory
mkdir MonNouveauDossier
mkdir -p Dossier/SousDossier/AutreSousDossier # Crée toute l'arborescence
7.4.6 - cp - Copier
Copy
cp fichier.txt copie.txt # Copier un fichier
cp -r Dossier/ CopieDossier/ # Copier un dossier (récursif)
cp *.jpg ~/Images/ # Copier tous les JPG
7.4.7 - mv - Déplacer ou renommer
Move
mv ancien.txt nouveau.txt # Renommer
mv fichier.txt ~/Documents/ # Déplacer
mv *.mp3 ~/Musique/ # Déplacer tous les MP3
7.4.8 - rm - Supprimer
Remove
ATTENTION : pas de corbeille !
rm fichier.txt # Supprimer un fichier
rm -r Dossier/ # Supprimer un dossier
rm -rf Dossier/ # Force la suppression (dangereux !)
rm *.tmp # Supprimer tous les .tmp
Ne JAMAIS faire : sudo rm -rf / (détruit tout le système !)
7.5 - Les commandes SPECTACULAIRES
7.5.1- GREP - Le chercheur ultra-rapide
grep cherche du texte dans des fichiers. C'est l'outil le plus utilisé sous Linux.
- Trouver un mot dans un fichier :
- grep "Linux" article.txt
- Résultat : Affiche toutes les lignes contenant "Linux"
Chercher dans TOUS les fichiers d'un dossier (récursif)
- grep -r "mot de passe" ~/Documents/
- Ce que ça fait : Parcourt instantanément tous vos documents et trouve où apparaît "mot de passe"
- Équivalent Windows : Impossible aussi rapidement avec la recherche Windows !
Chercher dans des milliers de fichiers simultanément
- grep -r "erreur" /var/log/
- Ce que ça fait : Scanne instantanément tous les logs système pour trouver les erreurs.
- Sur un gros serveur : peut analyser des gigaoctets de données en quelques secondes !
Compter les occurrences
- grep -c "Linux" article.txt
- Résultat : Le nombre de fois où "Linux" apparaît
Afficher les numéros de ligne
- grep -n "TODO" code.py
- Résultat :
- 15: # TODO: améliorer cette fonction
- 42: # TODO: gérer les erreurs
- 78: # TODO: optimiser
- Par exemple pour trouver ce qu'il vous reste à faire dans son code !
- Résultat :
Recherche insensible à la casse
- grep -i "linux" article.txt
- Trouve : Linux, LINUX, linux, LiNuX, etc.
Inverser la recherche (lignes qui NE contiennent PAS le mot)
- grep -v "commentaire" code.py
- Affiche : Tout le code SAUF les lignes avec "commentaire"
Combiner avec d'autres commandes (pipes)
- cat /var/log/syslog | grep "error" | grep -v "ignored"
- Ce que ça fait :
- Lit le fichier de logs système
- Garde seulement les lignes avec "error"
- Enlève celles qui contiennent "ignored"
- Résultat : Vous ne voyez que les vraies erreurs importantes !
- Ce que ça fait :
7.5.2 - 2. FIND - Trouver des fichiers à la vitesse de l'éclair
Trouver tous les fichiers PDF
- find ~ -name "*.pdf"
- Ce que ça fait : Parcourt votre dossier personnel et liste TOUS les PDF, même dans les sous-sous-sous-dossiers
Trouver les gros fichiers (> 100 Mo)
- find ~ -size +100M
- Utilité pratique : Nettoyer votre disque en trouvant ce qui prend de la place
Trouver les fichiers modifiés aujourd'hui
- find ~ -mtime 0
- Ce que ça fait : Liste tout ce que vous avez modifié aujourd'hui (parfait pour retrouver où vous avez travaillé)
Trouver ET supprimer en une commande
- find ~/Téléchargements/ -name "*.tmp" -delete
- Ce que ça fait : Trouve tous les fichiers temporaires et les supprime automatiquement
Trouver et exécuter une action
- find ~/Images/ -name "*.jpg" -exec convert {} {}.png \;
- Ce que ça fait : Trouve tous les JPG et les convertit en PNG automatiquement !
7.5.3 -Pipes et redirections - Enchaîner les commandes
Le symbole | (pipe) envoie le résultat d'une commande vers une autre. C'est une commande puissante de Linux.
Compter le nombre de fichiers dans un dossier
- ls | wc -l
- Ce que ça fait :
- ls liste les fichiers
- | envoie cette liste vers
- wc -l qui compte le nombre de lignes
- Ce que ça fait :
Afficher les 10 plus gros fichiers
- du -ah ~ | sort -rh | head -10
- Décryptage :
- du -ah ~ : liste tous les fichiers avec leur taille
- sort -rh : trie par taille décroissante
- head -10 : garde seulement les 10 premiers
- Résultat : On sait ce qui encombre le disque dur !
- Décryptage :
Trouver les processus qui consomment le plus de mémoire
- ps aux | sort -k 4 -r | head -10
- Ce que ça fait :
- ps aux : liste tous les processus
- sort -k 4 -r : trie par utilisation mémoire (colonne 4)
- head -10 : les 10 premiers
- Ce que ça fait :
Compter les types de fichiers
- find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
- Ce que ça fait : Compte combien vous avez de .txt, .jpg, .pdf, etc.
- Résultat exemple :
- 245 jpg
- 123 txt
- 87 pdf
- 45 png
7.5.4 - SSH et Tunnels - Contrôler d'autres machines
Se connecter à un autre ordinateur
- ssh
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. - Ce que ça fait : Vous ouvre un terminal sur la machine distante comme si vous étiez devant !
Copier des fichiers vers une machine distante
- scp fichier.txt
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. :/home/marie/- Ce que ça fait : Copie le fichier de façon sécurisée vers l'autre machine
Copier un dossier entier
- scp -r MonDossier/
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. :/home/marie/
Tunnel SSH - Accéder à un service distant de façon sécurisée
- ssh -L 8080:localhost:80
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. - Ce que ça fait : Crée un tunnel chiffré. Maintenant, quand vous allez sur http://localhost:8080 sur votre PC, vous accédez au port 80 du serveur distant !
- Utilité pratique : Accéder à une interface web d'administration qui n'est normalement accessible que depuis le serveur.
Tunnel inversé - Partager votre machine avec quelqu'un
- ssh -R 8080:localhost:80
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. - Ce que ça fait : Expose votre port 80 local sur le port 8080 du serveur public. Quelqu'un peut maintenant accéder à votre serveur web local via internet !
7.5.5 - Manipulation de texte ultra-rapide
Remplacer du texte dans plusieurs fichiers
- sed -i 's/ancien/nouveau/g' *.txt
- Ce que ça fait : Remplace "ancien" par "nouveau" dans TOUS les fichiers .txt
- Équivalent Windows : Ouvrir chaque fichier, Ctrl+F, remplacer, sauvegarder, fichier suivant...
Extraire la colonne d'un fichier CSV
- cut -d',' -f2 fichier.csv
- Ce que ça fait : Extrait la deuxième colonne d'un CSV
Compter les lignes, mots et caractères
- wc rapport.txt
- Résultat :
- 150 1234 8956 rapport.txt
- (150 lignes, 1234 mots, 8956 caractères)
- Résultat :
Afficher seulement les lignes uniques
- sort fichier.txt | uniq
- Ce que ça fait : Supprime les doublons
7.5.6 - Surveillance système en temps réel
Surveiller les logs en direct
- tail -f /var/log/syslog
- Ce que ça fait : Affiche les nouvelles lignes du log au fur et à mesure qu'elles arrivent
- Utilité : Débugger un problème en temps réel
Voir l'activité réseau en temps réel
- nethogs
- Ce que ça fait : Montre quel programme utilise votre bande passante en ce moment même
Surveiller l'utilisation disque en temps réel
- watch -n 1 df -h
- Ce que ça fait : Actualise l'affichage de l'espace disque toutes les secondes
7.5.7 - Commandes combinées puissantes
Trouver les 20 plus gros fichiers de votre système
- sudo du -ah / 2>/dev/null | sort -rh | head -20
- Explication :
- du -ah / : taille de tous les fichiers depuis la racine
- 2>/dev/null : ignore les erreurs de permission
- sort -rh : trie par taille
- head -20 : garde les 20 premiers
- Explication :
Trouver tous les fichiers en double
- find . -type f -exec md5sum {} + | sort | uniq -w32 -dD
- Ce que ça fait : Calcule l'empreinte de chaque fichier et trouve les identiques
Libérer de la mémoire cache
- sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
- Ce que ça fait : Force le système à libérer le cache disque (si votre système est lent)
Télécharger un site web complet
- wget -r -p -k -np https://exemple.com
- Ce que ça fait : Télécharge le site entier avec toutes les images et pages liées !
Convertir tous les espaces en underscores dans les noms de fichiers
- for f in *\ *; do mv "$f" "${f// /_}"; done
- Ce que ça fait : Renomme mon fichier.txt en txt automatiquement pour tous les fichiers
Créer une archive et la compresser
- tar -czf sauvegarde.tar.gz ~/Documents/
- Ce que ça fait : Archive et compresse votre dossier Documents en un seul fichier
- Pour extraire : tar -xzf sauvegarde.tar.gz
Tester la vitesse du disque
- dd if=/dev/zero of=test.img bs=1G count=1 oflag=direct
- Ce que ça fait : Mesure la vitesse d'écriture de votre disque dur
7.6 – Automatiser avec des scripts
Vous pouvez sauvegarder vos commandes dans un fichier .sh et les réexécuter !
Créer un script :
- nano mon_script.sh
Contenu du script :
- #!/bin/bash
- echo "Début du nettoyage..."
- find ~/Téléchargements/ -mtime +30 -delete
- echo "Fichiers vieux de plus de 30 jours supprimés !"
- du -sh ~/Téléchargements/
- echo "Nettoyage terminé !"
Rendre le script exécutable : hmod +x mon_script.sh
L'exécuter : ./mon_script.sh
7.7 - Astuces efficaces
Historique des commandes
- Flèche haut : commande précédente
- Ctrl + R : rechercher dans l'historique
- history : afficher tout l'historique
Auto-complétion
- Tab : complète automatiquement les noms de fichiers et commandes
- Tab Tab : affiche toutes les possibilités
Raccourcis clavier
- Ctrl + C : interrompt la commande en cours
- Ctrl + D : ferme le terminal
- Ctrl + L : efface l'écran (comme clear)
- Ctrl + A : début de la ligne
- Ctrl + E : fin de la ligne
- Ctrl + U : efface toute la ligne
7.8 – Les commandes à connaître
- man [commande] # Manuel d'une commande
- [commande] --help # Aide rapide
- which [commande] # Où se trouve la commande
- sudo [commande] # Exécuter en administrateur
- clear # Effacer l'écran
- exit # Fermer le terminal
7.9 – Les commandes à ne pas faire sans réfléchir
- sudo rm -rf / (détruit tout le système)
- Copier-coller des commandes sans les comprendre
- Exécuter un script téléchargé sans le lire
- chmod 777 sur des fichiers sensibles (donne tous les droits à tout le monde)
7.10 Conclusion sur la ligne de commande
La ligne de commande peut sembler intimidante au début, mais c'est comme apprendre à conduire une voiture manuelle après avoir utilisé une automatique toute sa vie : au début c'est déroutant, puis ça devient naturel, et ensuite vous vous demandez comment vous avez pu faire sans !
Commencer doucement :
- Naviguez avec cd, ls, pwd
- Essayez grep pour chercher dans vos fichiers
- Utilisez find pour localiser vos documents
- Expérimentez les pipes | pour combiner des commandes
- Créez vos premiers scripts pour automatiser vos tâches répétitives
Même les experts Linux consultent man et --help régulièrement. Personne ne connaît toutes les options de toutes les commandes !