Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 5 novembre 2017

Le paquet trash-cli ou comment utiliser la corbeille en ligne de commande

On a tous à un moment ou à un autre supprimé un fichier par erreur sous Linux.

On remédie souvent à cette situation malheureuse par un:

alias rm='rm -i'

Cependant, il existe un moyen de se passer de la confirmation de suppression de la commande rm et cela consiste à utiliser la corbeille en ligne de commande.

Linux propose en effet le paquet trash-cli que l'on installe comme suit:

sudo apt-get install trash-cli

Et pour supprimer un fichier, plutôt que d'utiliser la commande rm:

trash-put Readme.md 

Puis:

trash-put Profiles.zip 

Pour afficher la liste des fichiers présents dans la corbeille:

trash-list 
2017-11-05 16:34:05 /home/user/Profiles.zip
2017-11-05 16:33:51 /home/user/Readme.md

La timestamp affiché étant la date de suppression du fichier.

Supposons maintenant que j'ai supprimé Readme.md par erreur:

user@machine:~$ restore-trash 
   0 2017-11-05 16:34:05 /home/pyfourmond/Profiles.zip
   1 2017-11-05 16:33:51 /home/pyfourmond/Readme.md
What file to restore [0..1]: 

Il me suffit alors de sélectionner le numéro du fichier pour que celui-ci soit restauré.

Le paquet trash-cli fournit aussi la commande restore-trash qui permet de rétablir l'intégralité des fichiers placés à la corbeille.

Et on peut maintenant définir:

alias rm='trash-put'

dimanche 24 août 2014

Protégez vos fichiers importants de la suppression accidentelle sous Linux

Il nous arrive à tous un jour ou l'autre de chercher un fichier sous Linux et de ne plus le retrouver ...

Ainsi récemment j'ai malheureusement supprimé un fichier contenant tout un tas de commandes pratiques dont je ne me souviens pas forcément :-(

Afin de ne pas refaire la même erreur par la suite, j'ai cherché quelle solution mettre en place pour éviter que cela se reproduise.

En ligne de commande, dès lors qu'on a défini un alias sur la commande rm comme suit dans .bashrc ou dans .bash_aliases:

alias rm='rm -i'

On est prévenu lorsqu'on tente de supprimer le fichier:

user@machine:~/Bureau$ rm Important.txt 
rm: remove regular empty file `Important.txt'? 

Et si on ne saisit pas "Yes" celui-ci n'est pas supprimé.

C'est bien mais le gestionnaire de fichiers, Thunar sous Xfce dans mon cas, n'en a que faire de l'alias de la commande rm et le fichier part à la corbeille. Certes, avec la corbeille tout n'est pas encore perdu.

Une solution toute simple consiste à placer tous vos fichiers importants dans un répertoire donné et dans un deuxième temps à enlever les droits d'écriture de ce dernier. En effet, comme sous Linux et sous Unix les droits de suppressions d'un fichier sont ceux du répertoire qui le contient, on ne pourra supprimer aucun fichier du répertoire contenant nos documents importants.

Attention, cette méthode n'empêche pas d'ouvrir le fichier avec un éditeur et donc de supprimer tout ou partie de son contenu (par exemple par Ctrl-A puis Ctrl-X), puisqu'on a les droits de lecture et d'écriture sur le fichier !

Une autre contrepartie de cette solution est que pour créer un nouveau fichier, il faudra temporairement remettre les droits d'écriture sur le répertoire en question. Mais, si on oublie ensuite d'enlever ces droits d'écriture après la création du nouveau fichier on perd évidemment la protection recherchée sur nos fichiers ... On peut par exemple pour éviter ce problème créer plusieurs fichiers vides dès le début et que l'on éditera ensuite.