Comment puis-je écrire un petit script pour nettoyer les fichiers de chaque répertoire au démarrage de l'ordinateur?


9

J'ai un ordinateur invité pour une utilisation Internet uniquement. Certains utilisateurs téléchargent certains fichiers et les laissent sur le bureau, mais l'ordinateur n'a pas assez d'espace pour tous les invités et il n'est pas autorisé d'y placer un fichier.

Ce que je veux faire, c'est nettoyer tous les fichiers du répertoire personnel au démarrage de l'ordinateur, mais conserver la structure du répertoire comme Musique, Images, Documents et Téléchargements.

Comment puis-je accomplir cela?


À presque tous: vos réponses - désolé - sont nulles et vous le savez. Et si l'invité choisit une autre langue? Qu'en est-il de tous ces fichiers de configuration et de cache cachés (historique du navigateur, corbeille, ...)? Il devrait plutôt y avoir une liste blanche de fichiers qui ne seront pas supprimés (selon Roland Taylor). De plus, vous devriez envisager d'utiliser xdg-user-diret ~/.config/user-dirs.dirspour les répertoires par défaut.
dAnjou

@dAnjou: avec ma solution, les dossiers standard dans home seront créés en fonction de la langue choisie. De plus, l'OP semble demander un environnement propre, donc je ne comprends pas pourquoi avoir ce que vous appelez une "liste blanche".
enzotib

1
@enzotib: Ok, désolé. Apparemment, Roland Taylor (et moi) avait tort. Je ne sais pas ce qui m'a frappé. Pouvez-vous modifier votre réponse et ajouter la possibilité de mettre votre script dans /etc/gdm/PostSessionou /etc/gdm/PreSessionafin que je puisse reprendre mon downvote?
dAnjou

Réponses:


14

Vous pouvez supprimer en toute sécurité tous les fichiers dans le répertoire, parce qu'ils sont recréés, en dehors des fichiers copiés sur la création d'utilisateur à partir /etc/skel, donc

#!/bin/bash

shopt -s dotglob 
rm -rf /home/username/*
sudo -u username cp -a /etc/skel/* /home/username/

usernamedevrait être remplacé par quelque chose de significatif.

Selon votre demande ("lorsque l'ordinateur démarre"), cela peut être exécuté à partir de /etc/rc.local. Plus probablement, vous voulez l'exécuter entre chaque connexion, alors placez-le sous /etc/gdm/PostSessionou /etc/gdm/PreSession.


Vous savez qu'il y a des fichiers qui, s'ils sont supprimés, vous empêcheront de vous connecter?
RolandiXor

@Roland Taylor: quel fichier? Je viens de tester la suppression de tous les fichiers
enzotib

1
@danjjl: cette option fait correspondre bash *avec tous les fichiers et répertoires, même ceux cachés.
enzotib

1
non, les fichiers manquants ne vous empêcheront pas de vous connecter. Un répertoire personnel manquant peut provoquer des problèmes ou des fichiers avec des autorisations incorrectes. Mais le programme ne doit en aucun cas présumer qu'un fichier existe. S'il n'existe pas, il doit simplement être créé.
Jo-Erlend Schinstad

1
Je ne suggère pas de le mettre dans "application de démarrage", qui sont probablement exécutés après le user-dirs-update-gtkscript de démarrage global. Pour un autre utilisateur, vous devez modifier le usernamedans le script. Enfin, le compte invité n'a pas de répertoire personnel persistant, le script n'est donc pas nécessaire pour ce compte.
enzotib

6

Vous décrivez la session d'invité. Je ne sais pas exactement comment cela fonctionne, mais en 11.10, il est affiché par défaut dans l'écran d'accueil. Ce compte fait exactement ce que vous voulez, donc la question est de savoir si vous voulez passer du temps à le recréer le 11.04, ou si vous préférez attendre d'être à l'aise avec la mise à niveau vers 11.10. Il entrera en Bêta 1 jeudi. Dans tous les cas, cela ne fait pas de mal de télécharger et de démarrer une session en direct et de voir comment vous l'aimez. Si c'est exactement comme vous le souhaitez, vous saurez comment le recréer.


2

Créez un script avec le nom de votre choix et ajoutez ce contenu:

rm -r ~/Music/*
rm -r ~/Pictures/*
rm -r ~/Documents/*
rm -r ~/Videos/*
rm -r ~/Downloads*
rm -r ~/Desktop/*

Enregistrez ce fichier, marquez-le comme exécutable et ajoutez-le à vos applications de démarrage (pour le compte à nettoyer).

Cela effacera tous les fichiers de ces répertoires. Cependant, nettoyer le contenu de ~/lui-même est un peu plus complexe et je mettrai à jour ma réponse si je trouve un moyen sûr de le faire.


1

Vous pourriez faire quelque chose comme

#!/bin/bash

rm -rf /home/Guest/Desktop/*
rm -rf /home/Guest/Documents/*
rm -rf /home/Guest/Downloads/*
rm -rf /home/Guest/Music/*
rm -rf /home/Guest/Pictures/*
rm -rf /home/Guest/Videos/*

Enregistrez-le comme quelque chose comme cleanup.shet rendez-le exécutable avec chmod +x cleanup.sh. Ensuite, vous pouvez appeler ./cleanup. Notez que cela supprime tout dans ces dossiers, à utiliser avec précaution. Assurez-vous de remplacer «Invité» par le nom de votre utilisateur.

Vous pouvez effectuer cette exécution au démarrage en l'ajoutant aux préférences des applications de démarrage.

Vous pouvez également ajouter ce script en tant que tâche cron sur votre système afin qu'il s'exécute chaque nuit. Voir ici pour plus d'informations sur les tâches cron.


lol ta réponse est meilleure que la mienne: D! Btw changez -rf en -r car c'est plus sûr.
RolandiXor

@Roland: pas nécessairement plus sûr et même un piège possible: -fempêche de demander la suppression des fichiers en lecture seule (fichiers sans le bit d'écriture défini) et supprime ceux sans confirmation. En supprimant -f, un utilisateur peut empêcher la suppression de tout fichier en créant le /home/Guest/Desktop/000000000fichier et en le rendant en lecture seule. Cela fera que le script se bloquera avec une confirmation cachée et ne poursuivra donc pas la suppression des fichiers. Firefox est connu pour effectuer des téléchargements en lecture seule.
Lekensteyn

C'est pourquoi je l'ai initialement inclus. Je ne voulais pas que le script échoue en cas de fichier en lecture seule. J'ai aussi pensé que c'était un script assez destructeur de toute façon, ajouter le -fdrapeau n'allait pas faire trop de mal. Je peux l'ajouter à nouveau.
Kris Harper
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.