Introduction
Dans ce projet, vous allez apprendre à créer une commande personnalisée rm qui déplace les fichiers supprimés vers un répertoire de corbeille au lieu de les supprimer définitivement. C'est une fonctionnalité pratique à avoir sur votre serveur Linux pour éviter la suppression accidentelle de fichiers essentiels.
👀 Aperçu
labex:project/ $ ll /tmp/trash
total 2.0K
-rw-r--r-- 1 labex labex 8 Oct 26 17:47 trash_file.md
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment configurer le répertoire
/tmp/trashpour stocker temporairement les fichiers supprimés - Comment créer un script de commande personnalisée
rmqui déplace les fichiers supprimés vers le répertoire de corbeille - Comment mettre à jour la variable d'environnement
PATHpour utiliser la commande personnaliséerm - Comment tester la commande personnalisée
rm -fpour vous assurer qu'elle fonctionne comme prévu
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Protéger votre serveur Linux contre la suppression accidentelle de fichiers en implémentant une commande personnalisée
rmavec un répertoire de corbeille - Comprendre comment modifier les commandes système pour changer leur comportement par défaut
- Gagner de l'expérience dans la programmation en langage de shell et la gestion des variables d'environnement
Configurer le répertoire de corbeille
Dans cette étape, vous allez apprendre à configurer le répertoire /tmp/trash pour stocker temporairement les fichiers supprimés.
- Ouvrez un terminal.
- Créez le répertoire
/tmp/trashet définissez les autorisations appropriées :
sudo mkdir /tmp/trash
sudo chown root:root /tmp/trash
sudo chmod 1777 /tmp/trash
La permission 1777 active le "bit collant" sur le répertoire, ce qui permet à tous les utilisateurs d'écrire dans le répertoire, mais seul le propriétaire peut supprimer les fichiers à l'intérieur.
Mettre à jour la variable d'environnement PATH
Dans cette étape, vous allez mettre à jour la variable d'environnement PATH pour vous assurer que la commande personnalisée rm est utilisée au lieu de la commande système rm par défaut.
- Créez un nouveau répertoire pour stocker la commande personnalisée
rm:
sudo mkdir -p /usr/local/custom/bin
- Éditez le fichier
/etc/environment:
sudo vim /etc/environment
- Ajoutez le répertoire
/usr/local/custom/binau début de la variablePATH:
PATH="/usr/local/custom/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
- Enregistrez le fichier et quittez l'éditeur.
- Sourcez le fichier
/etc/environmentpour mettre à jour l'environnement du shell actuel :
source /etc/environment
sudo chmod a+x /usr/local/custom/bin
Maintenant, la commande personnalisée rm sera utilisée au lieu de la commande système rm par défaut.
Créer la commande rm personnalisée
Dans cette étape, vous allez créer une commande personnalisée rm qui déplacera les fichiers supprimés vers le répertoire /tmp/trash au lieu de les supprimer définitivement.
- Créez le script de commande personnalisée
rm:
sudo vim /usr/local/custom/bin/rm
Ajoutez le contenu suivant au fichier :
#!/bin/zsh
## Ce script est utilisé pour déplacer des fichiers ou des répertoires vers le répertoire de corbeille au lieu de les supprimer définitivement.
## Si l'option -f est utilisée, les cibles seront déplacées vers le répertoire de corbeille.
## Si les cibles n'existent pas, un message d'erreur sera affiché.
TRASH_DIR="/tmp/trash"
if [[ "$1" == "-f" ]]; then
shift
for arg in "$@"; do
## Vérifiez si la cible existe
if [[ -e "$arg" ]]; then
## Déplacez la cible vers le répertoire de corbeille
mv -f "$arg" "$TRASH_DIR"
else
echo "Erreur : $arg n'existe pas."
fi
done
else
## Exécutez la commande rm d'origine
/bin/rm "$@"
fi
- Définissez les autorisations appropriées pour le script de commande personnalisée
rm:
sudo chown root:root /usr/local/custom/bin/rm
sudo chmod 755 /usr/local/custom/bin/rm
Tester la commande rm personnalisée
Dans cette étape, vous allez tester la commande personnalisée rm -f pour vous assurer qu'elle fonctionne comme prévu.
- Créez un fichier de test dans le répertoire
/home/labex/project:
touch /home/labex/project/trash_file.md
- Utilisez la commande personnalisée
rm -fpour supprimer le fichier de test :
rm -f /home/labex/project/trash_file.md
- Vérifiez que le fichier a été déplacé vers le répertoire
/tmp/trash:
ls -l /tmp/trash
Vous devriez voir le fichier trash_file.md listé dans la sortie.
total 2.0K
-rw-r--r-- 1 labex labex 8 Oct 26 17:47 trash_file.md
Félicitations! Vous avez réussi à implémenter la commande personnalisée rm qui déplace les fichiers supprimés vers le répertoire /tmp/trash au lieu de les supprimer définitivement.
Résumé
Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



