Aide-mémoire des commandes Bash

Pratiquer les commandes Bash avec des labs

Utilisez cet aide-mémoire des commandes Bash comme référence rapide pour le shell : fichiers et dossiers, navigation, permissions, recherche, traitement de texte, pipes, redirection, processus, historique, alias, variables, boucles, fonctions et automatisation.

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

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
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que fait cd ~ ?
Change pour le répertoire personnel
Change pour le répertoire racine
Change pour le répertoire parent
Crée un nouveau répertoire

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
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que fait grep -r "motif" repertoire/ ?
Recherche uniquement dans le fichier courant
Recherche récursivement dans tous les fichiers du répertoire
Remplace le motif dans les fichiers
Supprime les fichiers contenant le motif

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/
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Que définit chmod 755 fichier.txt ?
Lecture, écriture, exécution pour tous les utilisateurs
Lecture et écriture pour le propriétaire, lecture pour les autres
Lecture, écriture, exécution pour le propriétaire ; lecture, exécution pour le groupe et les autres
Lecture seule pour tous les utilisateurs

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
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Quelle est la différence entre > et >> dans la redirection shell ?
> ajoute, >> écrase
> écrase le fichier, >> ajoute au fichier
> redirige stdout, >> redirige stderr
Il n'y a pas de différence

Pipes : |

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

Liens Pertinents