GNU/Linux >> Tutoriels Linux >  >> Linux

Option Rm pour échouer sur des fichiers inexistants ?

L'man page de rm dans GNU coreutils 8.12.197-032bb décrit le -f ou --force comme "ignorer les fichiers inexistants, ne jamais demander". Sans cette option, il supprimera tous les fichiers existants, ne demandera jamais et renverra un code de sortie différent de zéro si l'un des fichiers spécifiés n'existait pas. J'aimerais préserver les fichiers s'il y en a des fichiers spécifiés n'existent pas . Quel est le moyen le plus simple de procéder ?

Le cas d'utilisation est la sécurité :Si j'essaie de supprimer un fichier qui n'existe pas, c'est peut-être parce qu'il y a une attente non valide (ou un simple bogue) dans la commande. Par exemple le fameux rm -rf /usr /lib/nvidia-current/xorg/xorg aurait pu être évité de plusieurs façons, l'une d'elles étant une telle option (évidemment à moins que l'utilisateur, par une incroyable coïncidence, n'ait un /lib/nvidia-current/xorg/xorg répertoire), et un autre étant d'utiliser plus de citations ™. Cependant, les citations ne suffisent pas toujours. Par exemple, considérez ssh host '/bin/rm some paths; /bin/bash foo.sh' - Si j'avais oublié le point-virgule ou inséré à peu près n'importe quel autre symbole comme deux-points ou une virgule, il aurait essayé de supprimer /bin/bash et ~/foo.sh .

Réponse acceptée :

J'utilise ce genre de choses :

mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE

Pour un seul chemin :

mv /some/path DELETE && rm -rf DELETE

Mieux encore, tapez la rm command sur une ligne de commande séparée :mv /some/path DELETE Entrez rm -rf DELETE Entrez . De cette façon, le seul rm la commande qui entre dans l'historique de votre shell se trouve dans un fichier appelé DELETE , donc si vous avez supprimé une ancienne version d'un fichier, vous ne risquez pas de supprimer la nouvelle version en appuyant accidentellement sur Haut le mauvais nombre de fois puis Entrée .

Si vous souhaitez automatiser un peu :

mv_to_DELETE () {
  mkdir DELETE &&
  mv -- "[email protected]" DELETE/
}
mv_to_DELETE "some" "paths"
rm -rf DELETE

Linux
  1. Commande de décompression Linux :option pour forcer l'écrasement ?

  2. Supprimer les fichiers correspondants dans tous les sous-répertoires

  3. Un moyen plus rapide de supprimer un grand nombre de fichiers

  4. Supprimer tout /var/log ?

  5. Comment supprimer les fichiers .fuse_hidden* ?

Comment rechercher et supprimer des fichiers en double sous Linux

Comment supprimer des fichiers répertoriés dans un autre fichier sous Linux

Comment supprimer/supprimer des fichiers sous Linux à l'aide de la commande rm

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux

Supprimer tous les fichiers aléatoires sauf 1000 dans un répertoire

rsync ne supprimera pas les fichiers sur la destination