Feuille de triche Shell
Apprenez le Shell avec des Labs Pratiques
Apprenez le scripting Shell et les opérations en ligne de commande grâce à des laboratoires pratiques et des scénarios réels. LabEx propose des cours Shell complets couvrant les commandes Bash essentielles, les opérations sur fichiers, le traitement de texte, la gestion des processus et l'automatisation. Maîtrisez l'efficacité de la ligne de commande et les techniques de scripting shell.
Opérations sur Fichiers et Répertoires
Lister les Fichiers : ls
Afficher les fichiers et les répertoires dans l’emplacement actuel.
# Lister les fichiers dans le répertoire courant
ls
# Lister avec des informations détaillées
ls -l
# Afficher les fichiers cachés
ls -a
# Lister avec des tailles de fichiers lisibles par l'homme
ls -lh
# Trier par heure de modification
ls -lt
Créer des Fichiers : touch
Créer des fichiers vides ou mettre à jour les horodatages.
# Créer un nouveau fichier
touch nouveau_fichier.txt
# Créer plusieurs fichiers
touch fichier1.txt fichier2.txt fichier3.txt
# Mettre à jour l'horodatage du fichier existant
touch fichier_existant.txt
Créer des Répertoires : mkdir
Créer de nouveaux répertoires.
# Créer un répertoire
mkdir mon_repertoire
# Créer des répertoires imbriqués
mkdir -p parent/enfant/petit-enfant
# Créer plusieurs répertoires
mkdir dir1 dir2 dir3
Copier des Fichiers : cp
Copier des fichiers et des répertoires.
# Copier un fichier
cp source.txt destination.txt
# Copier un répertoire récursivement
cp -r repertoire_source dest_repertoire
# Copier avec demande de confirmation
cp -i fichier1.txt fichier2.txt
# Préserver les attributs du fichier
cp -p original.txt copie.txt
Déplacer/Renommer : mv
Déplacer ou renommer des fichiers et des répertoires.
# Renommer un fichier
mv ancien_nom.txt nouveau_nom.txt
# Déplacer un fichier vers un répertoire
mv fichier.txt /chemin/vers/repertoire/
# Déplacer plusieurs fichiers
mv fichier1 fichier2 fichier3 repertoire_cible/
Supprimer des Fichiers : rm
Supprimer des fichiers et des répertoires.
# Supprimer un fichier
rm fichier.txt
# Supprimer un répertoire et son contenu
rm -r repertoire/
# Supprimer sans confirmation (force)
rm -f fichier.txt
# Suppression interactive (confirmer chaque élément)
rm -i *.txt
Navigation et Gestion des Chemins
Répertoire Courant : pwd
Afficher le chemin du répertoire de travail actuel.
# Afficher le répertoire courant
pwd
# Exemple de sortie :
/home/utilisateur/documents
Changer de Répertoire : cd
Changer pour un répertoire différent.
# Aller au répertoire personnel
cd ~
# Aller au répertoire parent
cd ..
# Aller au répertoire précédent
cd -
# Aller à un répertoire spécifique
cd /chemin/vers/repertoire
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
cd ~ ?Arborescence des Répertoires : tree
Afficher la structure des répertoires au format arborescent.
# Afficher l'arborescence du répertoire
tree
# Limiter la profondeur à 2 niveaux
tree -L 2
# Afficher uniquement les répertoires
tree -d
Traitement de Texte et Recherche
Visualiser des Fichiers : cat / less / head / tail
Afficher le contenu des fichiers de différentes manières.
# Afficher le fichier entier
cat fichier.txt
# Visualiser le fichier page par page
less fichier.txt
# Afficher les 10 premières lignes
head fichier.txt
# Afficher les 10 dernières lignes
tail fichier.txt
# Afficher les 20 dernières lignes
tail -n 20 fichier.txt
# Suivre les changements dans le fichier (utile pour les logs)
tail -f logfile.txt
Rechercher dans les Fichiers : grep
Rechercher des motifs dans des fichiers texte.
# Rechercher un motif dans un fichier
grep "motif" fichier.txt
# Recherche insensible à la casse
grep -i "motif" fichier.txt
# Recherche récursive dans les répertoires
grep -r "motif" repertoire/
# Afficher les numéros de ligne
grep -n "motif" fichier.txt
# Compter les lignes correspondantes
grep -c "motif" fichier.txt
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
grep -r "motif" repertoire/ ?Trouver des Fichiers : find
Localiser des fichiers et des répertoires en fonction de critères.
# Trouver des fichiers par nom
find . -name "*.txt"
# Trouver des fichiers par type
find . -type f -name "config*"
# Trouver des répertoires
find . -type d -name "backup"
# Trouver des fichiers modifiés dans les 7 derniers jours
find . -mtime -7
# Trouver et exécuter une commande
find . -name "*.log" -delete
Manipulation de Texte : sed / awk / sort
Traiter et manipuler des données textuelles.
# Remplacer du texte dans un fichier
sed 's/ancien/nouveau/g' fichier.txt
# Extraire des colonnes spécifiques
awk '{print $1, $3}' fichier.txt
# Trier le contenu du fichier
sort fichier.txt
# Supprimer les lignes dupliquées
sort fichier.txt | uniq
# Compter la fréquence des mots
cat fichier.txt | tr ' ' '\n' | sort | uniq -c
Permissions et Propriété des Fichiers
Voir les Permissions : ls -l
Afficher les permissions détaillées et la propriété des fichiers.
# Afficher les informations détaillées du fichier
ls -l
# Exemple de sortie :
# -rw-r--r-- 1 utilisateur groupe 1024 Jan 1 12:00 fichier.txt
# d = répertoire, r = lecture, w = écriture, x = exécution
Changer les Permissions : chmod
Modifier les permissions des fichiers et des répertoires.
# Donner la permission d'exécution au propriétaire
chmod +x script.sh
# Définir des permissions spécifiques (755)
chmod 755 fichier.txt
# Supprimer la permission d'écriture pour le groupe/autres
chmod go-w fichier.txt
# Changement de permission récursif
chmod -R 644 repertoire/
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
chmod 755 fichier.txt ?Changer la Propriété : chown / chgrp
Changer le propriétaire et le groupe d’un fichier.
# Changer le propriétaire
chown nouveau_proprietaire fichier.txt
# Changer le propriétaire et le groupe
chown nouveau_proprietaire:nouveau_groupe fichier.txt
# Changer uniquement le groupe
chgrp nouveau_groupe fichier.txt
# Changement de propriété récursif
chown -R utilisateur:groupe repertoire/
Nombres de Permissions
Comprendre la notation numérique des permissions.
# Calcul des permissions :
# 4 = lecture (r), 2 = écriture (w), 1 = exécution (x)
# 755 = rwxr-xr-x (propriétaire: rwx, groupe: r-x, autres: r-x)
# 644 = rw-r--r-- (propriétaire: rw-, groupe: r--, autres: r--)
# 777 = rwxrwxrwx (toutes les permissions pour tous)
# 600 = rw------- (propriétaire: rw-, groupe: ---, autres: ---)
Gestion des Processus
Voir les Processus : ps / top / htop
Afficher les informations sur les processus en cours d’exécution.
# Afficher les processus pour l'utilisateur courant
ps
# Afficher tous les processus avec détails
ps aux
# Afficher les processus en format arborescent
ps -ef --forest
# Visionneuse de processus interactive
top
# Visionneuse de processus améliorée (si disponible)
htop
Tâches en Arrière-plan : & / jobs / fg / bg
Gérer les processus d’arrière-plan et de premier plan.
# Exécuter une commande en arrière-plan
commande &
# Lister les tâches actives
jobs
# Ramener une tâche au premier plan
fg %1
# Envoyer une tâche à l'arrière-plan
bg %1
# Suspendre le processus courant
Ctrl+Z
Tuer les Processus : kill / killall
Terminer les processus par PID ou par nom.
# Tuer un processus par PID
kill 1234
# Tuer un processus de force
kill -9 1234
# Tuer tous les processus portant le nom
killall firefox
# Envoyer un signal spécifique
kill -TERM 1234
Surveillance du Système : free / df / du
Surveiller les ressources système et l’utilisation du disque.
# Afficher l'utilisation de la mémoire
free -h
# Afficher l'espace disque
df -h
# Afficher la taille d'un répertoire
du -sh repertoire/
# Afficher les plus grands répertoires
du -h --max-depth=1 | sort -hr
Redirection d’Entrée/Sortie
Redirection : > / >> / <
Rediriger la sortie et l’entrée des commandes.
# Rediriger la sortie vers un fichier (écraser)
commande > sortie.txt
# Ajouter la sortie à un fichier
commande >> sortie.txt
# Rediriger l'entrée depuis un fichier
commande < entree.txt
# Rediriger la sortie et les erreurs
commande > sortie.txt 2>&1
# Jeter la sortie
commande > /dev/null
Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage
> et >> dans la redirection shell ?> ajoute, >> écrase> écrase le fichier, >> ajoute au fichier> redirige stdout, >> redirige stderrPipes : |
Enchaîner des commandes ensemble à l’aide de pipes.
# Utilisation de base du pipe
commande1 | commande2
# Multiples pipes
cat fichier.txt | grep "motif" | sort | uniq
# Compter les lignes de la sortie
ps aux | wc -l
# Paginer à travers une longue sortie
ls -la | less
Tee : tee
Écrire la sortie à la fois dans un fichier et dans la sortie standard.
# Sauvegarder la sortie et l'afficher
commande | tee sortie.txt
# Ajouter au fichier
commande | tee -a sortie.txt
# Sorties multiples
commande | tee fichier1.txt fichier2.txt
Here Documents : <<
Fournir une entrée multiligne aux commandes.
# Créer un fichier avec here document
cat << EOF > fichier.txt
Ligne 1
Ligne 2
Ligne 3
EOF
# Envoyer un email avec here document
mail utilisateur@exemple.com << EOF
Sujet : Test
Ceci est un message de test.
EOF
Variables et Environnement
Variables : Affectation et Utilisation
Créer et utiliser des variables shell.
# Affecter des variables (pas d'espaces autour de =)
nom="John"
compte=42
# Utiliser des variables
echo $nom
echo "Bonjour, $nom"
echo "Compte : ${count}"
# Substitution de commande
repertoire_courant=$(pwd)
date_aujourdhui=$(date +%Y-%m-%d)
Variables d’Environnement : export / env
Gérer les variables d’environnement.
# Exporter une variable vers l'environnement
export PATH="/nouveau/chemin:$PATH"
export MA_VAR="valeur"
# Afficher toutes les variables d'environnement
env
# Afficher une variable spécifique
echo $HOME
echo $PATH
# Supprimer une variable
unset MA_VAR
Variables Spéciales
Variables shell intégrées ayant une signification particulière.
# Arguments du script
$0 # Nom du script
$1, $2, $3... # Premier, deuxième, troisième argument
$# # Nombre d'arguments
$@ # Tous les arguments comme mots séparés
$* # Tous les arguments comme un seul mot
$? # Statut de sortie de la dernière commande
# Information sur le processus
$$ # PID du shell courant
$! # PID du dernier processus en arrière-plan
Expansion de Paramètres
Techniques avancées de manipulation de variables.
# Valeurs par défaut
${var:-valeur_par_defaut} # Utiliser la valeur par défaut si var est vide
${var:=valeur_par_defaut} # Définir var à la valeur par défaut si vide
# Manipulation de chaînes
${var#motif} # Supprimer la correspondance la plus courte depuis le début
${var##motif} # Supprimer la correspondance la plus longue depuis le début
${var%motif} # Supprimer la correspondance la plus courte depuis la fin
${var%%motif} # Supprimer la correspondance la plus longue depuis la fin
Bases du Scripting
Structure du Script
Format de base du script et exécution.
#!/bin/bash
# Ceci est un commentaire
# Variables
salutation="Bonjour, Monde !"
utilisateur=$(whoami)
# Sortie
echo $salutation
echo "Utilisateur courant : $utilisateur"
# Rendre le script exécutable :
chmod +x script.sh
# Exécuter le script :
./script.sh
Instructions Conditionnelles : if
Contrôler le flux d’exécution du script avec des conditions.
#!/bin/bash
if [ -f "fichier.txt" ]; then
echo "Le fichier existe"
elif [ -d "repertoire" ]; then
echo "Le répertoire existe"
else
echo "Ni l'un ni l'autre n'existe"
fi
# Comparaison de chaînes
if [ "$USER" = "root" ]; then
echo "Exécution en tant que root"
fi
# Comparaison numérique
if [ $compte -gt 10 ]; then
echo "Le compte est supérieur à 10"
fi
Boucles : for / while
Répéter des commandes à l’aide de boucles.
#!/bin/bash
# Boucle for avec une plage
for i in {1..5}; do
echo "Nombre : $i"
done
# Boucle for avec des fichiers
for fichier in *.txt; do
echo "Traitement de : $fichier"
done
# Boucle while
compte=1
while [ $compte -le 5 ]; do
echo "Compte : $compte"
count=$((count + 1))
done
Fonctions
Créer des blocs de code réutilisables.
#!/bin/bash
# Définir une fonction
saluer() {
local nom=$1
echo "Bonjour, $nom !"
}
# Fonction avec valeur de retour
additionner_nombres() {
local somme=$(($1 + $2))
echo $somme
}
# Appeler des fonctions
saluer "Alice"
resultat=$(additionner_nombres 5 3)
echo "Somme : $resultat"
Commandes Réseau et Système
Commandes Réseau
Tester la connectivité et la configuration réseau.
# Tester la connectivité réseau
ping google.com
ping -c 4 google.com # Envoyer seulement 4 paquets
# Recherche DNS
nslookup google.com
dig google.com
# Configuration réseau
ip addr show # Afficher les adresses IP
ip route show # Afficher la table de routage
# Télécharger des fichiers
wget https://example.com/file.txt
curl -O https://example.com/file.txt
Informations Système : uname / whoami / date
Obtenir des informations système et utilisateur.
# Informations système
uname -a # Toutes les infos système
uname -r # Version du noyau
hostname # Nom de l'ordinateur
whoami # Nom d'utilisateur courant
id # ID utilisateur et groupes
# Date et heure
date # Date/heure actuelle
date +%Y-%m-%d # Format personnalisé
uptime # Temps de fonctionnement du système
Archive et Compression : tar / zip
Créer et extraire des archives compressées.
# Créer une archive tar
tar -czf archive.tar.gz repertoire/
# Extraire une archive tar
tar -xzf archive.tar.gz
# Créer une archive zip
zip -r archive.zip repertoire/
# Extraire une archive zip
unzip archive.zip
# Voir le contenu de l'archive
tar -tzf archive.tar.gz
unzip -l archive.zip
Transfert de Fichiers : scp / rsync
Transférer des fichiers entre systèmes.
# Copier un fichier vers un serveur distant
scp fichier.txt utilisateur@serveur:/chemin/vers/destination
# Copier depuis un serveur distant
scp utilisateur@serveur:/chemin/vers/fichier.txt .
# Synchroniser des répertoires (local vers distant)
rsync -avz repertoire_local/ utilisateur@serveur:/repertoire_distant/
# Synchroniser avec suppression (miroir)
rsync -avz --delete repertoire_local/ utilisateur@serveur:/repertoire_distant/
Historique des Commandes et Raccourcis
Historique des Commandes : history
Afficher et réutiliser les commandes précédentes.
# Afficher l'historique des commandes
history
# Afficher les 10 dernières commandes
history 10
# Exécuter la commande précédente
!!
# Exécuter une commande par son numéro
!123
# Exécuter la dernière commande commençant par 'ls'
!ls
# Rechercher dans l'historique interactivement
Ctrl+R
Expansion de l’Historique
Réutiliser des parties des commandes précédentes.
# Arguments de la dernière commande
!$ # Dernier argument de la commande précédente
!^ # Premier argument de la commande précédente
!* # Tous les arguments de la commande précédente
# Exemple d'utilisation :
ls /chemin/très/long/vers/fichier.txt
cd !$ # Va à /chemin/très/long/vers/fichier.txt
Raccourcis Clavier
Raccourcis essentiels pour une utilisation efficace de la ligne de commande.
# Navigation
Ctrl+A # Aller au début de la ligne
Ctrl+E # Aller à la fin de la ligne
Ctrl+F # Avancer d'un caractère
Ctrl+B # Reculer d'un caractère
Alt+F # Avancer d'un mot
Alt+B # Reculer d'un mot
# Édition
Ctrl+U # Effacer la ligne avant le curseur
Ctrl+K # Effacer la ligne après le curseur
Ctrl+W # Supprimer le mot avant le curseur
Ctrl+Y # Coller le dernier texte supprimé
# Contrôle des processus
Ctrl+C # Interrompre la commande courante
Ctrl+Z # Suspendre la commande courante
Ctrl+D # Quitter le shell ou EOF
Combinaisons et Astuces de Commandes
Combinaisons de Commandes Utiles
Commandes uniques puissantes pour les tâches courantes.
# Trouver et remplacer du texte dans plusieurs fichiers
find . -name "*.txt" -exec sed -i 's/ancien/nouveau/g' {} \;
# Trouver les plus grands fichiers dans le répertoire courant
du -ah . | sort -rh | head -10
# Surveiller un fichier journal pour un motif spécifique
tail -f /var/log/syslog | grep "ERREUR"
# Compter les fichiers dans un répertoire
ls -1 | wc -l
# Créer une sauvegarde avec horodatage
cp fichier.txt fichier.txt.sauvegarde.$(date +%Y%m%d-%H%M%S)
Alias et Fonctions
Créer des raccourcis pour les commandes fréquemment utilisées.
# Créer des alias (ajouter à ~/.bashrc)
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
# Afficher tous les alias
alias
# Créer des alias persistants dans ~/.bashrc :
echo "alias ma_commande='longue commande ici'" >>
~/.bashrc
source ~/.bashrc
Contrôle des Tâches et Sessions Screen
Gérer les processus de longue durée et les sessions.
# Démarrer une commande en arrière-plan
nohup longue_commande_en_cours &
# Démarrer une session screen
screen -S ma_session
# Détacher de screen : Ctrl+A puis D
# Rattaché à screen
screen -r ma_session
# Lister les sessions screen
screen -ls
# Alternative : tmux
tmux new -s ma_session
# Détacher : Ctrl+B puis D
tmux attach -t ma_session
Maintenance du Système
Tâches courantes d’administration système.
# Vérifier l'utilisation du disque
df -h
du -sh /*
# Vérifier l'utilisation de la mémoire
free -h
cat /proc/meminfo
# Vérifier les services en cours d'exécution
systemctl status nom_service
systemctl list-units --type=service
# Mettre à jour les listes de paquets (Ubuntu/Debian)
sudo apt update && sudo apt upgrade
# Rechercher les paquets installés
dpkg -l | grep nom_paquet