Découvrir le terminal¶
Introduction¶
Le terminal (aussi appelé console, ligne de commande, ou shell) est une interface textuelle qui permet d'interagir avec votre ordinateur en tapant des commandes. Pour un développeur Python, maîtriser le terminal est essentiel.
Pourquoi utiliser le terminal ?¶
- Efficacité : Certaines tâches sont plus rapides en ligne de commande
- Automatisation : Possibilité de créer des scripts pour automatiser des tâches
- Développement : Gérer des projets, installer des packages, exécuter des programmes
- Serveurs : Les serveurs n'ont souvent pas d'interface graphique
1. Accéder au Terminal¶
Windows¶
- PowerShell : Rechercher "PowerShell" dans le menu Démarrer
- Invite de commandes : Rechercher "cmd"
- Git Bash : Si Git est installé (recommandé pour une expérience Unix-like)
- Windows Terminal : Application moderne qui combine plusieurs shells
macOS¶
- Terminal : Applications → Utilitaires → Terminal
- Ou :
Cmd + Espacepuis taper "Terminal"
Linux¶
- Raccourci clavier : Généralement
Ctrl + Alt + T - Ou : Chercher "Terminal" dans les applications
2. Comprendre l'Interface du Terminal¶
Quand vous ouvrez le terminal, vous voyez quelque chose comme :
Cette ligne s'appelle le prompt et contient :
- utilisateur : votre nom d'utilisateur
- ordinateur : le nom de votre machine
- ~ : le répertoire actuel (~ signifie le répertoire personnel)
- $ : indique que vous êtes un utilisateur normal (# pour root/admin)
3. Commandes de Base pour la Navigation¶
pwd (Print Working Directory)¶
Affiche le chemin du répertoire actuel
ls (List)¶
Liste les fichiers et dossiers du répertoire actuel
# Liste simple
ls
# Liste détaillée avec permissions, taille, date
ls -l
# Afficher les fichiers cachés
ls -a
# Combinaison (détaillé + cachés)
ls -la
# Trier par date de modification
ls -lt
Windows (cmd/PowerShell) : utiliser dir au lieu de ls
cd (Change Directory)¶
Change de répertoire
# Aller dans un dossier
cd Documents
# Remonter d'un niveau
cd ..
# Aller au répertoire personnel
cd ~
# ou simplement
cd
# Aller à la racine du système
cd /
# Revenir au répertoire précédent
cd -
# Chemin absolu (depuis la racine)
cd /home/utilisateur/Documents
# Chemin relatif (depuis la position actuelle)
cd ../Images
4. Manipulation de Fichiers et Dossiers¶
mkdir (Make Directory)¶
Créer un nouveau dossier
# Créer un dossier
mkdir mon_projet
# Créer plusieurs dossiers
mkdir dossier1 dossier2 dossier3
# Créer une arborescence de dossiers
mkdir -p projets/python/mon_app
touch¶
Créer un fichier vide (Unix/Mac/Git Bash)
Windows (PowerShell) :
cp (Copy)¶
Copier des fichiers ou dossiers
# Copier un fichier
cp source.txt destination.txt
# Copier dans un autre dossier
cp fichier.txt /chemin/vers/dossier/
# Copier un dossier entier (récursif)
cp -r dossier_source/ dossier_destination/
Windows (cmd) : utiliser copy pour les fichiers, xcopy pour les dossiers
mv (Move)¶
Déplacer ou renommer des fichiers
# Renommer un fichier
mv ancien_nom.txt nouveau_nom.txt
# Déplacer un fichier
mv fichier.txt /chemin/vers/destination/
# Déplacer et renommer
mv fichier.txt /autre/dossier/nouveau_nom.txt
Windows (cmd) : utiliser move ou ren pour renommer
rm (Remove)¶
Supprimer des fichiers ou dossiers
# Supprimer un fichier
rm fichier.txt
# Supprimer plusieurs fichiers
rm fichier1.txt fichier2.txt
# Supprimer un dossier vide
rmdir dossier_vide
# Supprimer un dossier et son contenu (ATTENTION !)
rm -r dossier/
# Forcer la suppression sans confirmation
rm -rf dossier/
ATTENTION : rm -rf est dangereux ! Il supprime sans confirmation et sans possibilité de récupération.
Windows (cmd) : utiliser del pour les fichiers, rmdir ou rd /s pour les dossiers
5. Visualiser le Contenu des Fichiers¶
cat (Concatenate)¶
Afficher le contenu d'un fichier
cat fichier.txt
# Afficher plusieurs fichiers
cat fichier1.txt fichier2.txt
# Afficher avec numéros de ligne
cat -n fichier.txt
Windows (cmd) : utiliser type
less / more¶
Visualiser un fichier page par page
less fichier.txt
# Navigation : espace (page suivante), b (page précédente), q (quitter)
more fichier.txt
Windows (PowerShell) : utiliser more
head / tail¶
Afficher le début ou la fin d'un fichier
# 10 premières lignes
head fichier.txt
# 5 premières lignes
head -n 5 fichier.txt
# 10 dernières lignes
tail fichier.txt
# Suivre un fichier en temps réel (utile pour les logs)
tail -f application.log
6. Commandes Spécifiques à Python¶
python / python3¶
Exécuter l'interpréteur Python
# Lancer Python interactif
python
# ou
python3
# Exécuter un script
python script.py
python3 mon_programme.py
# Exécuter du code directement
python -c "print('Hello World')"
# Afficher la version de Python
python --version
pip¶
Gestionnaire de packages Python
# Installer un package
pip install numpy
pip install requests pandas matplotlib
# Installer une version spécifique
pip install django==6.0.0
# Installer depuis requirements.txt
pip install -r requirements.txt
# Lister les packages installés
pip list
# Afficher les infos d'un package
pip show numpy
# Mettre à jour un package
pip install --upgrade numpy
# Désinstaller un package
pip uninstall numpy
# Créer un fichier requirements.txt
pip freeze > requirements.txt
Environnements Virtuels¶
# Créer un environnement virtuel
python -m venv mon_env
# Activer l'environnement (Linux/Mac)
source mon_env/bin/activate
# Activer l'environnement (Windows)
mon_env\Scripts\activate
# Désactiver l'environnement
deactivate
7. Recherche et Filtrage¶
grep (Global Regular Expression Print)¶
Rechercher du texte dans des fichiers
# Rechercher "erreur" dans un fichier
grep "erreur" log.txt
# Recherche insensible à la casse
grep -i "erreur" log.txt
# Rechercher dans tous les fichiers .py
grep "def " *.py
# Rechercher récursivement dans tous les sous-dossiers
grep -r "TODO" .
# Afficher le numéro de ligne
grep -n "import" script.py
Windows (PowerShell) : utiliser Select-String
find¶
Rechercher des fichiers
# Trouver tous les fichiers .py
find . -name "*.py"
# Trouver tous les fichiers modifiés dans les 7 derniers jours
find . -mtime -7
# Trouver les fichiers de plus de 100MB
find . -size +100M
Windows : utiliser dir /s ou PowerShell Get-ChildItem -Recurse
8. Redirection et Pipes¶
Redirection de sortie¶
# Écrire la sortie dans un fichier (écrase le contenu)
ls > liste_fichiers.txt
python script.py > resultat.txt
# Ajouter à la fin d'un fichier (sans écraser)
echo "Nouvelle ligne" >> fichier.txt
python script.py >> log.txt
# Rediriger les erreurs
python script.py 2> erreurs.txt
# Rediriger sortie standard ET erreurs
python script.py > output.txt 2>&1
Pipes (|)¶
Enchaîner des commandes
# Compter le nombre de fichiers .py
ls *.py | wc -l
# Afficher les lignes contenant "def" dans tous les .py
cat *.py | grep "def"
# Trier et afficher les 10 premiers
ls -l | sort | head -n 10
9. Raccourcis Clavier Utiles¶
Navigation¶
Ctrl + A: Aller au début de la ligneCtrl + E: Aller à la fin de la ligneCtrl + U: Effacer du curseur au début de la ligneCtrl + K: Effacer du curseur à la fin de la ligneCtrl + W: Effacer le mot précédentAlt + B: Reculer d'un motAlt + F: Avancer d'un mot
Historique¶
↑/↓: Naviguer dans l'historique des commandesCtrl + R: Rechercher dans l'historique (très utile !)history: Afficher l'historique des commandes!!: Répéter la dernière commande!n: Exécuter la commande numéro n de l'historique
Contrôle¶
Ctrl + C: Arrêter/Interrompre le processus en coursCtrl + D: Fermer le terminal (EOF)Ctrl + Z: Mettre en pause le processusCtrl + L: Effacer l'écran (équivalent declear)Tab: Auto-complétion (TRÈS UTILE !)
10. Gestion des Processus¶
ps (Process Status)¶
Afficher les processus en cours
# Processus de l'utilisateur actuel
ps
# Tous les processus
ps aux
# Filtrer les processus Python
ps aux | grep python
Windows : utiliser le Gestionnaire des tâches ou tasklist en cmd
kill¶
Arrêter un processus
# Arrêter proprement un processus
kill PID
# Forcer l'arrêt
kill -9 PID
# Arrêter tous les processus Python
pkill python
Windows (cmd) : utiliser taskkill /PID numero ou taskkill /IM nom_processus.exe
top / htop¶
Moniteur de processus en temps réel
Windows : Gestionnaire des tâches ou Get-Process en PowerShell
11. Permissions (Linux/Mac)¶
chmod (Change Mode)¶
Modifier les permissions d'un fichier
# Rendre un script exécutable
chmod +x script.py
# Permissions complètes pour le propriétaire
chmod 755 fichier.txt
# Lecture seule pour tous
chmod 444 fichier.txt
Les chiffres représentent :
- 7 = lecture + écriture + exécution (rwx)
- 6 = lecture + écriture (rw-)
- 5 = lecture + exécution (r-x)
- 4 = lecture seule (r--)
chown (Change Owner)¶
Changer le propriétaire d'un fichier
# Changer le propriétaire
sudo chown utilisateur fichier.txt
# Changer le propriétaire et le groupe
sudo chown utilisateur:groupe fichier.txt
12. Variables d'Environnement¶
Afficher les variables¶
# Afficher toutes les variables d'environnement
env
# ou
printenv
# Afficher une variable spécifique
echo $PATH
echo $HOME
echo $USER
Windows (cmd) : utiliser set ou echo %PATH%
Définir des variables¶
# Temporaire (session actuelle uniquement)
export MA_VARIABLE="valeur"
# Vérifier
echo $MA_VARIABLE
# Ajouter au PATH
export PATH=$PATH:/nouveau/chemin
Pour rendre permanentes les modifications, ajouter ces lignes à :
- Linux/Mac : ~/.bashrc ou ~/.zshrc
- Windows : Variables d'environnement système
13. Commandes Réseau Utiles¶
ping¶
Tester la connectivité réseau
curl¶
Télécharger ou interroger des URLs
# Télécharger un fichier
curl -O https://example.com/fichier.zip
# Afficher le contenu d'une page
curl https://api.github.com/users/python
# Envoyer une requête POST
curl -X POST -d "param=value" https://example.com/api
wget¶
Télécharger des fichiers
wget https://example.com/fichier.zip
# Télécharger en arrière-plan
wget -b https://example.com/gros_fichier.zip
14. Archivage et Compression¶
tar¶
Créer et extraire des archives
# Créer une archive
tar -cvf archive.tar dossier/
# Créer une archive compressée (gzip)
tar -czvf archive.tar.gz dossier/
# Extraire une archive
tar -xvf archive.tar
# Extraire une archive gzip
tar -xzvf archive.tar.gz
# Lister le contenu sans extraire
tar -tvf archive.tar.gz
Options : - c : create (créer) - x : extract (extraire) - v : verbose (détaillé) - f : file (fichier) - z : gzip compression
zip / unzip¶
# Créer un zip
zip -r archive.zip dossier/
# Extraire un zip
unzip archive.zip
# Lister le contenu
unzip -l archive.zip
15. Astuces pour Développeurs Python¶
Créer la structure d'un projet rapidement¶
mkdir mon_projet
cd mon_projet
mkdir src tests docs
touch README.md requirements.txt .gitignore
touch src/__init__.py src/main.py
touch tests/__init__.py tests/test_main.py
Script d'initialisation de projet¶
Créer un fichier init_projet.sh :
#!/bin/bash
# Script d'initialisation de projet Python
PROJECT_NAME=$1
if [ -z "$PROJECT_NAME" ]; then
echo "Usage: ./init_projet.sh nom_du_projet"
exit 1
fi
mkdir $PROJECT_NAME
cd $PROJECT_NAME
# Structure de dossiers
mkdir src tests docs
# Fichiers de base
touch README.md
touch requirements.txt
touch .gitignore
touch src/__init__.py
touch src/main.py
touch tests/__init__.py
# Environnement virtuel
python -m venv venv
echo "Projet $PROJECT_NAME initialisé avec succès !"
echo "Pour activer l'environnement : source venv/bin/activate"
Rendre le script exécutable : chmod +x init_projet.sh
Utiliser : ./init_projet.sh mon_super_projet
Alias utiles¶
Ajouter dans ~/.bashrc ou ~/.zshrc :
# Raccourcis Python
alias py='python3'
alias pip='pip3'
alias venv='python3 -m venv'
alias activate='source venv/bin/activate'
# Raccourcis généraux
alias ll='ls -lah'
alias ..='cd ..'
alias ...='cd ../..'
alias cls='clear'
Puis recharger : source ~/.bashrc
16. Commandes Avancées¶
xargs¶
Construire et exécuter des commandes depuis l'entrée standard
# Supprimer tous les fichiers .pyc
find . -name "*.pyc" | xargs rm
# Compter les lignes de tous les fichiers .py
find . -name "*.py" | xargs wc -l
awk¶
Traitement de texte et extraction de colonnes
# Extraire la 2ème colonne
ls -l | awk '{print $2}'
# Calculer l'espace disque total utilisé
ls -l | awk '{sum += $5} END {print sum}'
sed¶
Édition de flux (stream editor)
# Remplacer du texte
sed 's/ancien/nouveau/g' fichier.txt
# Supprimer les lignes vides
sed '/^$/d' fichier.txt
# Modifier en place
sed -i 's/ancien/nouveau/g' fichier.txt
17. Exercices Pratiques¶
Exercice 1 : Navigation¶
- Affichez votre répertoire actuel
- Listez tous les fichiers (y compris cachés)
- Créez un dossier
exercices_python - Allez dans ce dossier
- Revenez au répertoire parent
Exercice 2 : Création de projet¶
- Créez un projet avec la structure suivante :
Exercice 3 : Manipulation de fichiers¶
- Créez un fichier
notes.txt - Ajoutez-y du texte avec
echo "Ma première note" > notes.txt - Ajoutez une autre ligne avec
echo "Ma deuxième note" >> notes.txt - Affichez le contenu
- Copiez le fichier en
notes_backup.txt
Exercice 4 : Python et pip¶
- Vérifiez votre version de Python
- Créez un environnement virtuel
- Activez-le
- Installez
requestsetbeautifulsoup4 - Créez un fichier
requirements.txt - Désactivez l'environnement
Exercice 5 : Recherche¶
- Créez plusieurs fichiers
.pyavec différents contenus - Utilisez
greppour trouver tous les fichiers contenantimport - Utilisez
findpour lister tous les fichiers.py
18. Ressources Supplémentaires¶
Sites Web¶
- SS64.com : Référence complète des commandes (Windows, Linux, Mac)
- ExplainShell.com : Explique les commandes complexes
- TLDR Pages : Exemples simplifiés de commandes
Commandes d'aide¶
# Manuel d'une commande (Linux/Mac)
man ls
man grep
# Aide intégrée
ls --help
python --help
# Commande "which" pour trouver l'emplacement
which python
which pip
Cheat Sheets¶
- Imprimez et gardez à portée de main un cheat sheet des commandes
- Créez vos propres notes avec vos commandes fréquentes
19. Conseils Finaux¶
Bonnes Pratiques¶
- Utilisez Tab pour l'auto-complétion : gain de temps énorme
- Utilisez Ctrl+R pour rechercher dans l'historique
- Lisez les messages d'erreur : ils sont souvent explicites
- Testez d'abord avec
lsouechoavant des commandes destructrices - Faites des sauvegardes avant d'utiliser
rm -rf - Utilisez
--helpquand vous découvrez une nouvelle commande - Créez des alias pour vos commandes fréquentes
- Documentez vos scripts avec des commentaires
Pour Aller Plus Loin¶
- Apprenez vim ou nano pour éditer des fichiers dans le terminal
- Maîtrisez tmux ou screen pour gérer plusieurs sessions
- Explorez bash scripting pour automatiser vos tâches
- Découvrez zsh et oh-my-zsh pour un terminal amélioré
- Utilisez Docker pour containeriser vos applications Python
En résumé¶
Le terminal peut sembler intimidant au début, mais c'est un outil puissant qui deviendra vite indispensable. Commencez par maîtriser les commandes de base (navigation, création de fichiers), puis progressez vers des usages plus avancés.
La pratique est la clé : utilisez le terminal quotidiennement pour vos projets Python, et vous deviendrez rapidement à l'aise.