88 votes

Comment faire pour que 'rm' déplace les fichiers vers la poubelle ?

J'utilise le terminal quotidiennement, je vais souvent utiliser rm DirectoryName . Parfois, je suis un peu impatient et je fais rm * sans délibérer si c'est sûr. Comme vous pouvez l'imaginer, ces manigances me sont parfois revenues en pleine figure. Quelqu'un sait-il comment créer un mappage pour rm whatever déplace tout dans la corbeille que je supprime ensuite manuellement.

4 votes

Vous pouvez faire mv /file/to/delete ~./Trash

8 votes

Il est difficile de mettre des roues d'entraînement sur un outil de précision comme rm sans casser d'autres scripts. Quelque chose comme alias rm=/bin/rm -i devrait vous permettre de vous mettre en sécurité. Aussi - quel répertoire de la corbeille voulez-vous que rm utilise ? Cela devient compliqué car Mac OS X possède un répertoire de corbeille pour chaque volume ainsi qu'une corbeille au niveau de l'utilisateur.

1 votes

Si vous utilisez zsh, par défaut, il vous demandera de le faire lorsque vous faites rm * o rm /path/*

117voto

jm666 Points 7802

Mauvaise idée

Utilisation de rm pour déplacer les fichiers à la poubelle est un coup de dopamine. C'est commun et agréable mais peut être mauvais pour vous sorti de son contexte.

Vous devez vraiment vous contrôler lorsque vous utilisez rm . Surtout si vos sauvegardes ne sont pas à jour ou si vous n'avez pas le temps de faire un effacement / installation / restauration.


N'utilisez pas rm

Imaginez on s'habitue à rm moving to trash et en faire une habitude. Bien sûr, votre système est sûr, mais lorsque vous vous connectez à l'ordinateur portable d'un ami (ou de votre femme ou de votre patron) et que vous devez supprimer quelque chose ? Vous serez en train d'utiliser le vrai rm - en supprimant ces fichiers pour toujours. Sans beaucoup de préparation et de qualificatifs, c'est une mauvaise habitude, et vous devez le savoir.

Donc, à la place, installez rmtrash et prenez l'habitude de l'utiliser :

# install rmtrash, (either from the macports or by the brew.)
$ alias trash="rmtrash"
$ alias   del="rmtrash"       # del / trash are shorter than rmtrash

Corriger les mauvaises habitudes

C'est ici que les conseils personnels commencent : changer son comportement est difficile. Une autre chose que vous pouvez faire pour vous forcer à utiliser rmtrash au lieu de rm est de l'aliaser à un message personnalisé dans votre .profile .

alias rm="echo Use 'del', or the full path i.e. '/bin/rm'"

Donc, chaque fois que vous utilisez rm on vous demandera d'utiliser soit rmtrash o /bin/rm . N'oubliez pas que ce n'est que temporaire. Après un certain temps, vous devrez supprimer l'alias.


Ne jamais, jamais, faire quelque chose comme ça :

$ pwd
/
$ cd /tnp; rm -rf *
sh: cd: /tnp: No such file or directory

Pop Quiz : Dans quel répertoire le rm la commande est exécutée ? :)

24 votes

&& est votre bouée de sauvetage. ; est le diable. P.S. La réponse est qu'à peu près tout ce qui se trouve sur votre système disparaît, dans l'exemple ci-dessus.

0 votes

Bien que, rm ne fasse pas de suppression sécurisée, mais le déplacement vers la corbeille / vide le fait (dans ma configuration) .

2 votes

Les utilisateurs de Debian/Ubuntu installent trash-cli à la place, ex. aptitude install trash-cli - voir github.com/andreafrancia/trash-cli

27voto

Caleb Points 6203

Je peux penser à une douzaine de façons de coder cela, mais je refuse catégoriquement d'en taper une dans une réponse. I fortement vous recommande de vous débarrasser de votre habitude de devenir un peu fou . Vous ne devriez pas avoir l'habitude d'utiliser rm du tout si vous ne pouvez pas l'utiliser correctement.

Le problème fondamental ici est que même si vous installez un filet de sécurité sur votre propre système, cela ne fera que vous aider à conserver vos mauvaises habitudes et lorsque vous vous retrouverez un jour sur une autre machine qui ne dispose pas des mêmes protections personnalisées, vous ferez quelque chose d'épique.

La bonne solution est d'utiliser rm tel qu'il était censé être utilisé, y compris l'ajout manuel de l'adresse de l'utilisateur. -i argumentaire chaque fois que vous avez un doute sur l'expansion d'un glob, et disposez de bonnes sauvegardes du système que vous pouvez restaurer en cas d'erreur grave de l'utilisateur. Essayer d'ajouter la "corbeille" à des commandes qui, dans le reste de l'univers, ne l'utilisent pas, est une demi-mesure qui représente le pire des deux mondes.

Soit tu utilises la poubelle, soit tu ne le fais pas. Utilisation de rm ne va pas à la poubelle, il s'enlève.

Si vous voulez utiliser la poubelle, il n'y a rien de mal à cela. Prenez simplement l'habitude d'utiliser la rmtrash au lieu de rm . Cela aidera votre cerveau à comprendre ce qui se passe et ne vous fera pas prendre une mauvaise habitude qui vous causera du chagrin plus tard.

1 votes

Votre argument ne tient pas la route dans ce cas. Les gens suppriment des choses accidentellement tous les jours, les sauvegardes du système ne fonctionnent pas dans le cas d'un ordinateur personnel (comme le mien) car les ressources sont limitées, un déplacement vers la poubelle est une manière bien plus efficace de gérer ces suppressions pour mon cas d'utilisation particulier.

7 votes

@steve vous n'avez pas du tout compris. rm supprime par définition un fichier du disque. Il ne l'envoie pas à la poubelle. Apprendre à utiliser rm quand vous voulez dire envoyer à la poubelle vous prépare au désastre. Si vous voulez envoyer à la poubelle, utilisez rmtrash ou un programme conçu pour ce travail, vous ne ferez pas de cauchemars par la suite. Je ne disais pas qu'utiliser la poubelle est intrinsèquement mauvais, mais si vous voulez l'utiliser, ne la connectez pas à quelque chose qui n'a pas été conçu pour l'utiliser !

2 votes

brew install rmtrash et arrêter d'utiliser rm

4voto

yoliho Points 340

Utilisez un outil de ligne de commande comme rmtrash (qui se contente généralement de déplacer le(s) fichier(s) vers ~/.Trash en s'assurant que le fichier a un nom unique) ou un script qui utilise appscript pour appeler le Finder pour effectuer la suppression. Cette dernière méthode est plus lente mais permet d'utiliser l'option Put Back du Finder pour restaurer facilement le fichier.

J'ai utilisé poubelle car il est dans MacPorts et Homebrew et rmtrash est maintenant très vieux et non maintenu. Cependant, en lisant les modifications du code lors de l'édition de cette note, j'ai remarqué qu'il a changé en 2017, passant de l'utilisation du Finder par défaut au déplacement par défaut (ce qui n'est pas ce que je voulais et constitue un changement majeur). Je vais donc chercher un autre outil.

Comme indiqué dans les commentaires, ce n'est pas une bonne idée de faire de rm un alias ; mieux vaut se souvenir d'utiliser le programme de gestion des déchets que vous avez installé directement.

Mais si tu le voulais, tu pourrais faire

Après avoir installé rmtrash dans /usr/local/bin/rmtrash, vous pouvez créer un alias pour bash.

alias rm='rmtrash'

Vous pouvez utiliser \rm pour appeler rm directement et ignorer l'alias

16 votes

Si vous utilisez un outil comme rmtrash s'il vous plaît, faites-vous une faveur et l'utiliser par son propre nom . Ne jamais aliaser des choses qui ne sont pas rm à rm il vous mordra un jour.

1 votes

rmtrash n'est pas compatible avec rm (ne prend pas en charge les mêmes paramètres de ligne de commande que l'option -r ), donc un alias n'est pas vraiment utile dans tous les cas.

2 votes

C'est une mauvaise idée d'aliaser rmtrash à rm . Non seulement ils ne sont pas compatibles, mais en plus cela renforcera la mauvaise habitude et vous utiliserez accidentellement rm dans un autre système en pensant que vous utilisez seulement rmtrash .

3voto

Scott Bridgman Points 31

Je veux juste ajouter une habitude utile à prendre pour ceux qui ne le font pas déjà. Avant d'utiliser rm pour quoi que ce soit, faites d'abord 'ls'. De cette façon, vous pouvez voir tous les fichiers que vous avez l'intention de supprimer. Ensuite, au lieu de retaper, il suffit de reprendre la commande 'ls' précédente et de remplacer ls par rm. Cette habitude a réduit beaucoup d'anxiété lors de l'invocation de rm.

3voto

Jim Campbell Points 131

Il y a des moyens de se protéger contre des résultats horribles provenant de rm . Cependant, je suis d'accord avec les autres commentateurs : très peu sont bons.

Ne croyez pas une minute que changer l'environnement de commandement vous aidera. Par exemple, vous trouverez partout en ligne des personnes qui recommandent de faire ce genre de choses :

alias rm="rm -i"

ou

function rm()
{
    echo >&2 'rm forbidden; use "/bin/rm"'
}
export -f rm

Cela ne fonctionnera pas. Point final. Il existe de nombreux cas d'utilisation où ces petits trucs de salon vous feront échouer lamentablement.

Le seul moyen robuste que j'ai utilisé pour m'épargner le danger de rm c'est en mettant en place un processus de sauvegarde régulière par cron sur les répertoires où je travaille. Raw UNIX le fait pour vous, avec une grande simplicité, en utilisant find en collaboration avec -mtime pour vérifier les fichiers qui ont été mis à jour dans ou depuis un certain temps.

0 votes

+1 pour cron seul. Merci :)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X