Pourquoi le fait de créer un alias pour la commande rm est une mauvaise pratique sous Linux
Un alias dans Unix/Linux est un raccourci qui vous permet de créer des commandes personnalisées ou de modifier le comportement des commandes existantes. En utilisant la commande alias, vous pouvez abréger une commande longue ou ajouter par défaut des options aux commandes, ce qui les rend plus faciles ou plus sûres à utiliser.
Cependant, vous devez être prudent lorsque vous utilisez des alias, surtout lorsqu'ils modifient le comportement de commandes puissantes comme rm, afin d'éviter de développer de mauvaises habitudes ou de rencontrer des comportements inattendus sur différents systèmes.
Dans ce bref tutoriel, nous allons apprendre pourquoi l'aliasing de rm vers rm -i est une mauvaise pratique avec un exemple pratique. Nous allons également apprendre les meilleures pratiques et des alternatives plus sûres pour aliaser la commande rm sous Linux.
Pourquoi certaines personnes créent un alias rm pour rm -i
Lorsque vous utilisez la commande rm sur un système Unix/Linux, elle supprime les fichiers immédiatement et de manière permanente. C'est une commande puissante qui doit être utilisée avec précaution pour éviter de supprimer accidentellement des fichiers importants.
Certaines personnes créent un alias pour rm, comme alias rm="rm -i", pour le rendre plus sûr. Cet alias modifie la commande rm pour qu'elle demande toujours une confirmation avant de supprimer quoi que ce soit.
Laissez-moi vous montrer un exemple, afin que vous puissiez mieux le comprendre.
Exemple de rm sans alias :
$ rm important-file.txtCette commande supprimera immédiatement important-file.txt sans demander si vous en êtes sûr. C'est rapide mais risqué si vous faites une faute de frappe ou changez d'avis.
Exemple de rm avec alias (rm -i) :
$ rm important-file.txtAvec l'alias, cette commande demande maintenant : « supprimer le fichier ordinaire 'important-file.txt' ? » Vous devez taper y (oui) pour le supprimer ou n (non) pour annuler. Cela semble plus sûr car cela ajoute une étape pour vérifier votre décision.
Pourquoi aliaser la commande rm est une mauvaise pratique
L'alias rm='rm -i' est très dangereux parce que ;
Raison 1 - Mauvaises habitudes
Si vous vous habituez à ce que la commande rm demande toujours une confirmation, vous pourriez devenir moins prudent pour vérifier deux fois quels fichiers vous supprimez.
Un jour, si vous utilisez un compte utilisateur sans cet alias configuré, rm pourrait supprimer des fichiers immédiatement. Au moment où vous vous rendez compte de ce qui se passe, il pourrait être trop tard.
Cette habitude peut également être dangereuse sur les systèmes sans cet alias car rm supprimera les fichiers immédiatement, sans demander de confirmation.
Raison 2 - Comportement Incohérent
Si vous utilisez différents ordinateurs ou systèmes (comme un ordinateur de bureau, un serveur ou l'ordinateur portable d'un ami), la commande rm pourrait ne pas avoir le même alias.
Cette incohérence peut entraîner des erreurs, où vous vous attendez à ce qu'on vous demande une confirmation mais ce n'est pas le cas, et vous supprimez accidentellement quelque chose d'important.
Raison 3 - Problèmes de script et d'automatisation
Les scripts qui utilisent rm seront également affectés par l'alias. Si un script s'attend à supprimer des fichiers sans confirmation, l'alias peut le faire rester bloqué en attente d'une réponse. Cela peut casser l'automatisation et provoquer de la confusion.
Apprendre les bonnes habitudes
Au lieu de se fier à un alias pour la sécurité, il est préférable de pratiquer une utilisation prudente des commandes. Voici quelques conseils :
- Vérifiez toujours deux fois la commande et les fichiers qu'elle affectera avant d'appuyer sur Entrée.
- Utilisez la commande
lspour lister les fichiers et assurez-vous d'être dans le bon répertoire. - Pour les suppressions critiques, tapez manuellement
rm -ipour obtenir une invite de confirmation uniquement pour cette instance, plutôt que de faire de cela le comportement par défaut. - Entraînez-vous à utiliser
rmdans un environnement sûr, comme un dossier contenant des fichiers de test sans importance, pour gagner en confiance et adopter de bonnes habitudes.
Alternatives plus sûres à l'utilisation d'alias pour la commande rm
Au lieu de créer un alias de la commande par défaut rm en rm -i, vous pouvez utiliser l'une des alternatives plus sûres suivantes :
- Utiliser un alias personnalisé avec un nom de commande différent
- Créer un script de suppression de fichiers plus sûr qui place les données supprimées dans un répertoire de corbeille
- Utilisez l'outil trash-cli
- Utiliser les instantanés du système de fichiers
1. Créer un alias personnalisé
Si vous voulez créer un alias personnalisé pour la commande rm, utilisez un nom entièrement différent, par exemple rmi ou rmcli ou myrm, etc.
Par exemple, je vais créer un alias appelé rmi.
$ nano ~/.bashrcAjoutez la ligne suivante à la fin :
alias rmi='rm -i'Enregistrez le fichier et fermez-le.
À partir de maintenant, vous devriez utiliser la commande rmi pour supprimer des fichiers, au lieu de la commande par défaut 'rm'.
$ rmi somefile.txtOn vous demandera si vous voulez vraiment supprimer le fichier.
rm: remove regular file 'somefile.txt'?Appuyez sur 'y' pour confirmer la suppression du fichier ou sur 'n' pour l'ignorer.
Créer un alias séparé comme alias rmi='rm -i' est en effet une approche plus sûre et plus efficace que de remplacer le comportement par défaut de la commande rm.
Cette méthode vous permet d'avoir une option de suppression interactive sans modifier le comportement fondamental de rm, réduisant ainsi le risque de suppressions accidentelles dues à une dépendance excessive à l'alias.
Avantages de l'utilisation de alias rmi='rm -i' :
Voici pourquoi cette alternative est bénéfique pour une suppression de fichiers plus sûre :
- Distinction claire : Il maintient une distinction claire entre la commande standard
rmet sa version interactive, réduisant ainsi le risque d'utiliserrmpar réflexe en s'attendant à une invite de confirmation. - Risque réduit sur les systèmes inconnus : Si vous travaillez sur un système qui n'a pas vos alias personnalisés, vous êtes moins susceptible de supprimer des fichiers par accident car vous n'avez pas l'habitude de compter sur
rmpour demander une confirmation. - Flexibilité : Vous pouvez choisir quand utiliser
rmipour une suppression plus sûre etrmpour des suppressions plus rapides et non interactives, en fonction de la situation et de votre niveau de certitude.
2. Créez un script de suppression de fichiers plus sûr
Dans l'exemple précédent, nous avons créé une commande personnalisée appelée 'rmi' qui demande une confirmation avant de supprimer des fichiers. Alternativement, vous pourriez écrire un petit script qui inclut la journalisation et déplace les fichiers dans un répertoire de corbeille pour un examen ou une récupération ultérieure.
2.1. Créez le script
Créez un fichier texte appelé rmcli avec le contenu suivant :
#!/bin/bash
# rmcli: A safer file deletion script
TRASH_DIR="$HOME/.trash"
LOG_FILE="$HOME/.rmcli.log"
# Ensure trash directory exists
mkdir -p "$TRASH_DIR"
# Move files to trash instead of deleting
for file in "$@"; do
timestamp=$(date +%Y-%m-%d_%H-%M-%S)
trash_path="$TRASH_DIR/$(basename "$file")_$timestamp"
mv -v "$file" "$trash_path"
echo "[$timestamp] $file -> $trash_path" >> "$LOG_FILE"
doneN'hésitez pas à modifier le script selon vos besoins, comme changer l'emplacement du répertoire de la corbeille ou le format du fichier journal. Enregistrez le fichier et fermez-le.
2.2. Rendre le script exécutable :
Après avoir sauvegardé le script, vous devez le rendre exécutable. Cela vous permet de l'exécuter comme une commande. Pour ce faire, utilisez la commande chmod :
$ chmod +x rmcli2.3. Déplacez le script vers un emplacement dans votre PATH :
Pour plus de commodité, vous devriez déplacer le script vers un emplacement dans le PATH de votre système afin de pouvoir l'exécuter depuis n'importe quel répertoire. Un endroit courant pour les scripts personnels est /usr/local/bin :
$ sudo mv rmcli /usr/local/bin2.4. Utilisation du script :
Maintenant, vous pouvez utiliser la commande rmcli exactement comme vous utiliseriez rm, mais avec les fonctionnalités de sécurité de votre script.
Par exemple :
$ rmcli somefile.txtCette commande déplacera somefile.txt dans le répertoire trash au lieu de le supprimer définitivement.
Exemple de sortie :
renamed 'somefile.txt' -> '/home/ostechnix/.trash/somefile.txt_2024-02-28_16-53-59'Vous pouvez le vérifier en listant le contenu du répertoire ~/.trash.
$ ls ~/.trash2.5. Récupérer des fichiers :
Pour récupérer des fichiers, accédez au répertoire de la corbeille (~/.trash dans l'exemple) et déplacez les fichiers vers leur emplacement d'origine ou ailleurs selon les besoins.
$ cd ~/.trash$ mv somefile.txt_2024-02-28_16-53-59 ~/somefile.txt2.6. Journalisation :
Le script enregistre chaque « suppression » avec un horodatage. Assurez-vous que l'emplacement du fichier journal spécifié dans le script existe ou est accessible en écriture. Vous pouvez consulter ce journal pour voir quels fichiers ont été déplacés vers la corbeille.
$ cat $HOME/.rmcli.log
[2024-02-28_16-53-59] somefile.txt -> /home/ostechnix/.trash/somefile.txt_2024-02-28_16-53-593. Utiliser trash-cli
L'autre alternative plus sûre à rm consiste à utiliser un utilitaire de corbeille en ligne de commande comme trash-cli, qui déplace les fichiers vers un répertoire de corbeille au lieu de les supprimer définitivement. Cela permet de récupérer les fichiers si nécessaire.
Pour savoir comment installer et utiliser Trash-cli, veuillez consulter le lien suivant :
Trash-cli : Une corbeille en ligne de commande pour les systèmes de type Unix
4. Utilisez des systèmes de fichiers qui prennent en charge les instantanés
Utiliser un système de fichiers qui prend en charge un nombre illimité de snapshots, tel que BTRFS (B-tree File System) ou ZFS (Zettabyte File System), est une excellente stratégie pour se protéger contre la suppression ou l’écrasement accidentel de fichiers.
Les instantanés sont essentiellement des copies en lecture seule du système de fichiers à un moment précis, mais ils sont très efficaces à la fois en espace et en temps car ils ne stockent que les différences par rapport à l'instantané précédent.
Comment créer et gérer des instantanés Btrfs avec Snapper sous openSUSE
5. Autres pratiques plus sûres
- Mode verbeux : Utilisez l'option verbeuse (
-v) avecrmou votre alias pour obtenir une sortie détaillée de ce qui est en cours de suppression. Cela peut aider à détecter les erreurs avant qu'elles ne se produisent. Par exemple,alias rmi='rm -i -v'. - Mesures de sécurité scriptées : Pour les utilisateurs qui suppriment fréquemment des fichiers en masse ou via des scripts, envisagez d'écrire un script enveloppe autour de
rmqui inclut la journalisation des fichiers supprimés ou qui exige une confirmation explicite pour les suppressions dépassant un certain seuil (par exemple, nombre de fichiers, taille des fichiers). - Éduquez et Pratiquez : Éduquez régulièrement vous-même et les autres sur les implications des opérations en ligne de commande et pratiquez des habitudes de gestion de fichiers sûres. Cela inclut de vérifier deux fois le répertoire actuel (
pwd), de lister les fichiers (lsoula) avant la suppression, et d'utiliser les chemins absolus avec prudence.
Conclusion
Bien qu'aliaser rm en rm -i puisse sembler être une bonne mesure de sécurité, cela peut entraîner une confiance excessive et des erreurs dans les environnements où l'alias n'est pas défini.
En adoptant ces conseils et meilleures pratiques, vous pouvez réduire de manière significative les risques associés à la suppression accidentelle de fichiers avec la commande rm sur les systèmes Unix/Linux.
Lecture connexe :
- Autotrash – Un outil CLI pour purger automatiquement les anciens fichiers supprimés sous Linux
- Supprimer les fichiers qui n'ont pas été accédés pendant un certain temps sur Linux
- Une façon simple de protéger les fichiers contre la suppression accidentelle sous Linux
