command line

Perte du contenu du dossier d'accueil:mauvaise utilisation de rm

J'utilise Ubuntu-Mate 20.04 et j'ai perdu la plupart du contenu de mon dossier personnel.Je pense que cela pourrait être dû à une mauvaise utilisation de la commande "rm" avec sudo,mais je ne sais pas si cela pourrait être autre chose.

Je m'explique:J'essayais de supprimer un dossier ("targetfolder (something)")et son contenu dans /home/user2 tout en étant connecté en tant qu'utilisateur1 (l'utilisateur1 a les privilèges sudo).Donc,je l'ai fait :

sudo rm -r /home/user2/targetfolder (something)/ 

Au début,rm a donné des messages d'erreur à cause des parenthèses-je veux dire ceci:()-,alors j'ai remplacé une partie du nom du dossier par *,et j'ai réussi :

sudo rm -r /home/user2/targetfolder */

NOTE:J'ai peut-être utilisé des guillemets pour le nom du dossier à cause des espaces vides ('targetfolder *' ),bien que la dernière commande enregistrée dans le terminal soit sans guillemets.

Si je comprends bien,rm n'aurait dû supprimer que les dossiers dont le nom commence par "targetfolder" dans le dossier personnel de l'utilisateur 2,mais il semble avoir supprimé la majeure partie du dossier personnel de l'utilisateur 1.J'ajoute que comme je ne savais pas si rm fonctionnait ou non,j'ai fermé le terminal en tuant,je suppose,le processus.

Au cas où cela serait pertinent,les dossiers personnels de l'utilisateur 1 et de l'utilisateur 2 sont cryptés à l'aide d'ecryptfs (le dossier à supprimer dans /home/user2 était en dehors de .Private et,par conséquent,non crypté).

Ma question est donc de savoir si la commande rm telle que je l'ai utilisée aurait pu supprimer le contenu du dossier personnel de l'utilisateur 1 (ou même affecter le système).

J'ai une sauvegarde récente du contenu perdu,mais je voulais m'assurer que cela n'est pas dû à un problème autre que la commande rm.

Merci d'avance et désolé pour mon anglais.

This command

sudo rm -r /home/user2/targetfolder */

essaierait de supprimer un dossier /home/user2/targetfolder , qui n'existait probablement pas, puis les éléments correspondant à */ . Cela signifierait tous les répertoires non cachés (et leur contenu) présents dans le répertoire de travail actuel. Si le répertoire de travail actuel est le répertoire personnel de user1 , alors oui, c'est celui qui serait affecté.

L'erreur n'est pas de fuir l'espace. Un espace est un délimiteur séparant les arguments. Ici, vous fournissez deux arguments (à côté de l'option -r ), /home/user2/targetfolder et */ , où ce dernier est développé par le shell pour correspondre à tous les sous-répertoires non cachés (par exemple Documents/ , Videos/ , etc. )

Citer le modèle de nom de fichier,ou échapper l'espace,comme dans

sudo rm -r "/home/user2/targetfolder "*/

or

sudo rm -r /home/user2/targetfolder\ */

aurait inclus /home/user2/targetfolder (something)/ et d'autres dossiers correspondants, le cas échéant.

En général, une telle utilisation de rm -r , puis en combinaison avec sudo est, comme vous l'avez constaté, extrêmement dangereuse. N'exécutez pas immédiatement une telle commande mais vérifiez d'abord.

  • Remplacez sudo rm -r par ls -d . Cela listera tous les éléments inclus dans vos arguments, et vous permettra de vérifier ce qui sera supprimé au préalable (Merci à cocomac pour le conseil).
  • Une fois que ls répertorie ce que vous comptez supprimer, appuyez surpour rappeler cette commande et changer ls -d en sudo rm -r .

Si un seul répertoire doit être supprimé,évitez complètement d'utiliser des caractères génériques.Utilisez la complétion par tabulation.De cette façon,vous êtes sûr que le nom spécifique est correctement saisi sur la ligne de commande.