Come posso scrivere un piccolo script per pulire i file di ogni directory all'avvio del computer?


9

Ho un computer ospite solo per l'utilizzo di Internet. Alcuni utenti scaricano alcuni file e li lasciano sul desktop, ma il computer non ha spazio sufficiente per tutti gli ospiti e non è consentito inserire un file.

Quello che voglio fare è pulire ogni file all'interno della home directory all'avvio del computer, ma mantenere la struttura della directory come musica, immagini, documenti e download.

Come posso farlo?


A quasi tutti: le tue risposte - scusa - fai schifo e lo sai. Cosa succede se l'ospite sceglie un'altra lingua? Che dire di tutti quei file di configurazione e cache nascosti (cronologia del browser, cestino, ...)? Dovrebbe esserci piuttosto una lista bianca di file che non verranno rimossi (secondo Roland Taylor). Inoltre, dovresti considerare di usare xdg-user-dire ~/.config/user-dirs.dirsper le directory predefinite.
dAnjou,

@dAnjou: con la mia soluzione, le cartelle standard in home verranno create in base alla lingua scelta. Inoltre, l'OP sembra richiedere un ambiente pulito, quindi non riesco a capire perché avere quella che chiami una "lista bianca".
enzotib,

1
@enzotib: Ok, scusa. Apparentemente Roland Taylor (e io) avevamo torto. Non so cosa mi abbia colpito. Puoi modificare la tua risposta e aggiungere la possibilità di inserire il tuo script /etc/gdm/PostSessiono in /etc/gdm/PreSessionmodo che io possa riprendere il mio downvote?
dAnjou,

Risposte:


14

Puoi rimuovere in sicurezza tutti i file nella home directory, perché sono stati ricreati, a parte i file copiati durante la creazione dell'utente /etc/skel, quindi

#!/bin/bash

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

dove usernamedovrebbe essere sostituito con qualcosa di significativo.

Secondo la tua richiesta ("all'avvio del computer"), questo può essere eseguito da /etc/rc.local. Più probabilmente, si desidera eseguirlo tra ciascuno agli accessi, quindi inserirlo sotto /etc/gdm/PostSessiono /etc/gdm/PreSession.


Sai ci sono alcuni file che se cancellati ti impediranno di accedere?
RolandiXor

@Roland Taylor: quale file? Ho appena provato a rimuovere tutti i file
enzotib,

1
@danjjl: questa opzione fa coincidere bash *con tutti i file e le directory, anche quelli nascosti.
enzotib,

1
no, i file mancanti non ti impediranno di accedere. Una home directory mancante potrebbe causare problemi o file con permessi errati impostati. Ma il programma non dovrebbe mai, in nessun caso, supporre che esista un file. Se non esiste, dovrebbe essere creato.
Jo-Erlend Schinstad,

1
Non consiglio di metterlo in "applicazione di avvio", che probabilmente viene eseguito dopo lo user-dirs-update-gtkscript di avvio globale. Per un altro utente, è necessario modificare usernamelo script. Infine, l' account guest non ha una home directory persistente, quindi lo script non è necessario per questo account.
enzotib,

6

Stai descrivendo la sessione ospite. Non sono del tutto sicuro di come funzioni, ma in 11.10 è mostrato per impostazione predefinita nella schermata di benvenuto. Quell'account fa esattamente quello che vuoi, quindi la domanda è se vuoi passare il tempo a provare a ricrearlo su 11.04 o se preferisci aspettare fino a quando non ti senti a tuo agio con l'aggiornamento a 11.10. Sta entrando in Beta 1 giovedì. In ogni caso, non fa male scaricare e avviare una sessione live e vedere come ti piace. Se è esattamente come lo desideri, saprai come ricrearlo.


2

Crea uno script con un nome a tua scelta e aggiungi questo contenuto:

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

Salvare questo file, contrassegnarlo come eseguibile e aggiungerlo alle applicazioni di avvio (per l'account che deve essere pulito).

Questo cancellerà tutti i file in quelle directory. Tuttavia, pulire il contenuto di ~/se stesso è un po 'più complesso e aggiornerò la mia risposta se trovo un modo sicuro per farlo.


1

Potresti fare qualcosa del genere

#!/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/*

Salvalo come qualcosa di simile cleanup.she rendilo eseguibile con chmod +x cleanup.sh. Quindi puoi chiamare ./cleanup. Si noti che questo rimuove tutto in queste cartelle, utilizzare con cura. Assicurati di cambiare "Ospite" con il nome del tuo utente.

Puoi eseguirlo all'avvio aggiungendolo alle preferenze Applicazioni di avvio.

È inoltre possibile aggiungere questo script come cron job sul proprio sistema in modo che venga eseguito ogni notte. Vedi qui per maggiori informazioni sui lavori cron.


lol la tua risposta è migliore della mia: D! Btw cambia -rf in -r poiché è più sicuro.
RolandiXor

@Roland: non necessariamente più sicuro e persino un possibile errore: -fimpedisce di chiedere la rimozione di file di sola lettura (file senza il bit di scrittura impostato) e rimuove quelli senza conferma. Rimuovendo -f, un utente può impedire che qualsiasi file venga rimosso creando il /home/Guest/Desktop/000000000file e rendendolo di sola lettura. Ciò farà bloccare lo script con una conferma nascosta e quindi non continuerà con la rimozione dei file. Firefox è noto per effettuare download di sola lettura.
Lekensteyn,

Questo è il motivo per cui l'ho incluso inizialmente. Non volevo che lo script fallisse in caso di un file di sola lettura. Ho anche pensato che fosse comunque una sceneggiatura piuttosto distruttiva, aggiungendo che la -fbandiera non avrebbe fatto molto male. Potrei aggiungerlo di nuovo.
Kris Harper,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.