Objectif : Comprendre la différence entre un lien symbolique et un lien physique.
cd ~
echo "Ceci est un test" > original.txt
mkdir lien_symbolique_test
ln -s ~/original.txt ~/lien_symbolique_test/symb_link.txt
cat ~/lien_symbolique_test/symb_link.txt
echo "Ligne ajoutée après coup" >> original.txt
cat lien_symbolique_test/symb_link.txt
Vous devriez voir la nouvelle ligne dans le lien symbolique.
mkdir lien_physique_test
ln ~/original.txt ~/lien_physique_test/hard_link.txt
ln sans -s crée un lien physique.
Renommez ou supprimez original.txt :
mv original.txt original_renamed.txt
Vérifiez le contenu du lien symbolique et du lien physique :
cat lien_symbolique_test/symb_link.txt
cat lien_physique_test/hard_link.txt
Observez le comportement différent (le lien symbolique est cassé si on enlève totalement l'original, le lien physique reste utilisable).
Objectif : Découvrir la planification automatique de tâches répétitives.
crontab -e
* * * * * echo "$(date): Tâche cron exécutée." >> /home/<user>/cron_test.log
Remplacez <user> par votre nom d'utilisateur.
Sauvegardez et quittez l'éditeur.
tail -f /home/<user>/cron_test.log
Par exemple, tous les jours à 10h30 :
30 10 * * * echo "Tâche à 10h30" >> /home/<user>/cron_test.log
crontab -e
# * * * * * echo "$(date): Tâche cron exécutée." >> /home/<user>/cron_test.log
Objectif : Simplifier l'utilisation de commandes favorites.
nano ~/.bashrc
alias ll='ls -lh --color=auto'
Sauvegardez et quittez.
source ~/.bashrc
ll
Vous devriez voir un ls détaillé avec tailles lisibles et couleurs.
alias proj='cd /path/to/mon_projet'
source ~/.bashrc
proj
Vérifiez que vous êtes bien dans le dossier /path/to/mon_projet.
Objectif : Créer, modifier et exploiter des variables d'environnement.
MY_VAR="Hello World"
echo $MY_VAR
echo $MY_VAR
Si vous ouvrez un nouveau terminal, la variable n'existe plus.
echo 'export MY_VAR="Hello Permanent World"' >> ~/.bashrc
source ~/.bashrc
echo $MY_VAR
Vérifiez que MY_VAR est toujours défini :
echo $MY_VAR
Modifiez la ligne correspondante puis rechargez.
Objectif : Lister et analyser les connexions réseaux actives.
netstat -tulnp # Sur certaines distributions
# ou
ss -tulnp # Plus moderne
-tulnp : TCP, UDP, Listening, numeric, process name.
netstat -tulnp | grep ":22"
# ou
ss -tulnp | grep ":22"
ping 8.8.8.8
Revenez au premier terminal pour voir si des connexions apparaissent.
ifconfig # Sur certaines distributions
# ou
ip -s link
sudo netstat -tulnp
Vous aurez éventuellement plus d'informations.
Objectif : Comparer l'intégrité de fichiers et voir les différences textuelles.
echo "Première version du fichier" > version1.txt
cp version1.txt version2.txt
echo "Ligne différente" >> version2.txt
diff version1.txt version2.txt
sha256sum version1.txt > hash_v1.txt
cat hash_v1.txt
echo "Une petite modification" >> version1.txt
sha256sum version1.txt
Comparez le nouveau hash avec le hash enregistré dans hash_v1.txt.
diff version1.txt version2.txt
Objectif : Manipuler la date et l'heure.
date
date +"%Y-%m-%d"
CURRENT_DATE=$(date +"%Y-%m-%d_%H-%M-%S")
echo $CURRENT_DATE
touch "log_${CURRENT_DATE}.txt"
ls
#!/bin/bash
HOUR=$(date +"%H")
if [ $HOUR -lt 12 ]; then
echo "Bonjour !"
else
echo "Bon après-midi ou bonsoir !"
fi
Rendez-le exécutable et testez-le à différentes heures.
Objectif : Gérer la sortie standard, la sortie d'erreur et l'entrée standard.
ls -l > sortie.txt
cat sortie.txt pour vérifier.
ls /dossier/inexistant 2> erreur.txt
cat erreur.txt
ls /dossier/inexistant > tout.txt 2>&1
cat tout.txt
cat < sortie.txt
#!/bin/bash
echo "Redirection standard et erreur"
ls /dossier/inexistant 1>resultat.txt 2>erreur.txt
Vérifiez le contenu de resultat.txt et erreur.txt.
Objectif : Connaître la charge système, l'utilisation CPU/RAM et la place disque.
uptime
# ou
w
# ou
cat /proc/loadavg
top
# ou
htop
free -h
df -h
du -sh ~/*
Ordonné par taille :
du -sh ~/* | sort -h
Objectif : Gérer des fichiers de logs en rotation.
echo "Démarrage du log" > test.log
# Dans crontab -e :
* * * * * echo "$(date): nouveau message" >> /home/<user>/test.log
mv test.log "test_$(date +%Y-%m-%d_%H-%M-%S).log"
touch test.log
mkdir -p logs_archives
mv test_*.log logs_archives/
Créez un fichier de config dans /etc/logrotate.d/mon_log et définissez les règles de rotation.