Au lieu d'utiliser RM. Je souhaite utiliser une commande personnalisée de «suppression douce»

2

Au lieu d'utiliser la commande "RM" pour les choses. Je voudrais avoir une commande personnalisée qui déplacerait le fichier dans un dossier "corbeille" avec le répertoire qu'il avait. par exemple.

Si un fichier était /home/test/folder1/xx/file.so lorsqu'il était traité avec la commande, il serait déplacé vers /trash/home/test/folder1/xx/file.so de cette manière, je n'aurais aucun conflit avec quelque chose avec ce nom étant déjà à la poubelle.

Quelqu'un a-t-il une idée sur la façon de mettre en œuvre cela et de permettre également son utilisation récursive afin que les répertoires puissent également être supprimés?

slhck
la source

Réponses:

2

Regardez trash-cli . Il fournit une interface de ligne de commande à la même "corbeille" utilisée par KDE, GNOME et XFCE.

Cody Schafer
la source
utilise cela, et je l'aime.
George IV
C'est ce dont j'avais besoin. Je préfère avoir mon propre répertoire et faire les choses à ma façon, mais cela fera ce que je veux.
Et vous pouvez toujours créer un alias pour rm, donc il utilisera trash-cli au lieu de rm. Il suffit de mettre alias rm='trash-put'votre ~ / .bashrc et tout nouveau shell devrait utiliser la corbeille lorsque vous appelez rm. Si vous voulez utiliser le vrai rm, il suffit de taper \rmet cela fonctionnera.
Flávio Amieiro
5
Je déconseille fortement d'aliasing rm. Vous l'utiliserez avec plaisir, sachant que vous avez les fichiers de la corbeille au cas où vous auriez un problème, et qu'un jour vous constaterez que ce n'est pas le cas. Il se peut que vous soyez sur une autre machine ou que votre nom de fichier .bashrc ait été écrasé. Mieux vaut avoir votre propre commande, la trouver ne fonctionne pas et aller la réparer que supprimer définitivement des fichiers par erreur.
Pour mémoire, trash-cli a été transféré sur GitHub à l' adresse github.com/andreafrancia/trash-cli mais je ne peux pas modifier la réponse.
Calimo
0

J'utilise:

  function trash () { # safe rm to trash
  local path
  for path in "$@"; do
    # ignore any arguments
    if [[ "$path" = -* ]]; then :
    else
      local dst=${path##*/}
      # append the time if necessary
      while [ -e ~/.Trash/"$dst" ]; do
        dst="$dst "$(date +%H-%M-%S)
      done
      mv "$path" ~/.Trash/"$dst"
    fi
  done
}

Sûr et facile

utilisateur15345
la source
Pas très sûr, c'est par exemple garanti de causer beaucoup de problèmes si le fichier que vous essayez de supprimer se trouve sur une partition autre que votre maison
Calimo