Implémenter une commande personnalisée avec corbeille

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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/trash pour stocker temporairement les fichiers supprimés
  • Comment créer un script de commande personnalisée rm qui déplace les fichiers supprimés vers le répertoire de corbeille
  • Comment mettre à jour la variable d'environnement PATH pour utiliser la commande personnalisée rm
  • Comment tester la commande personnalisée rm -f pour 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 rm avec 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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicSystemCommandsGroup -.-> linux/source("Script Executing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/BasicFileOperationsGroup -.-> linux/chown("Ownership Changing") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/source -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} linux/ls -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} linux/touch -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} linux/rm -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} linux/chown -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} linux/chmod -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} linux/mkdir -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} linux/vim -.-> lab-301457{{"Implémenter une commande personnalisée avec corbeille"}} end

Configurez le répertoire de corbeille

Dans cette étape, vous allez apprendre à configurer le répertoire /tmp/trash pour stocker temporairement les fichiers supprimés.

  1. Ouvrez un terminal.
  2. Créez le répertoire /tmp/trash et 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.

Mettez à 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.

  1. Créez un nouveau répertoire pour stocker la commande personnalisée rm :
sudo mkdir -p /usr/local/custom/bin
  1. Éditez le fichier /etc/environment :
sudo vim /etc/environment
  1. Ajoutez le répertoire /usr/local/custom/bin au début de la variable PATH :
PATH="/usr/local/custom/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
  1. Enregistrez le fichier et quittez l'éditeur.
  2. Sourcez le fichier /etc/environment pour 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éez la commande personnalisée rm

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.

  1. 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
  1. 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

Testez la commande personnalisée rm

Dans cette étape, vous allez tester la commande personnalisée rm -f pour vous assurer qu'elle fonctionne comme prévu.

  1. Créez un fichier de test dans le répertoire /home/labex/project :
touch /home/labex/project/trash_file.md
  1. Utilisez la commande personnalisée rm -f pour supprimer le fichier de test :
rm -f /home/labex/project/trash_file.md
  1. 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.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.