Jak napisać mały skrypt do czyszczenia plików każdego katalogu podczas uruchamiania komputera?

9

Mam komputer-gość tylko do korzystania z Internetu. Niektórzy użytkownicy pobierają niektóre pliki i pozostawiają je na pulpicie, ale na komputerze nie ma wystarczającej ilości miejsca dla wszystkich gości i nie wolno w nich umieszczać pliku.

Chcę wyczyścić każdy plik w katalogu domowym podczas uruchamiania komputera, ale zachowaj strukturę katalogu, taką jak Muzyka, Obrazy, Dokumenty i Pobrane.

Jak mogę to osiągnąć?

Achu
źródło
Prawie wszystkim: twoje odpowiedzi - przepraszam - są do kitu i wiesz o tym. Co jeśli gość wybierze inny język? Co z tymi wszystkimi ukrytymi plikami konfiguracji i pamięci podręcznej (historia przeglądarki, kosz, ...)? Powinna być raczej biała lista plików, które nie zostaną usunięte (według Rolanda Taylora). Ponadto należy rozważyć użycie xdg-user-diri ~/.config/user-dirs.dirsdla domyślnych katalogów.
dAnjou,
@dAnjou: dzięki mojemu rozwiązaniu standardowe foldery w domu zostaną utworzone zgodnie z wybranym językiem. Wydaje się również, że PO żąda czystego środowiska, więc nie mogę zrozumieć, dlaczego tak zwaną „białą listę”.
enzotib
1
@enzotib: Ok, przepraszam. Najwyraźniej Roland Taylor (i ja) się mylił. Nie wiem co mnie uderzyło. Czy możesz edytować swoją odpowiedź i dodać możliwość umieszczenia skryptu /etc/gdm/PostSessionlub w /etc/gdm/PreSessioncelu odzyskania mojego komentarza?
dAnjou,

Odpowiedzi:

14

Możesz bezpiecznie usunąć wszystkie pliki z katalogu domowego, ponieważ są one odtwarzane, oprócz plików kopiowanych podczas tworzenia użytkownika /etc/skel, więc

#!/bin/bash

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

gdzie usernamenależy zastąpić czymś znaczącym.

Na żądanie („po uruchomieniu komputera”) można to wykonać /etc/rc.local. Bardziej prawdopodobne jest, że chcesz wykonać go między każdym logowaniem, więc umieść go pod /etc/gdm/PostSessionlub /etc/gdm/PreSession.

enzotib
źródło
Czy wiesz, że istnieją pliki, które po usunięciu uniemożliwiają zalogowanie się?
RolandiXor
@Roland Taylor: który plik? Właśnie przetestowałem usuwanie wszystkich plików
enzotib
1
@danjjl: ta opcja pozwala dopasować bash *do wszystkich plików i katalogów, nawet tych ukrytych.
enzotib
1
nie, brakujące pliki nie uniemożliwiają zalogowania się. Brakujący katalog domowy może powodować problemy lub pliki z nieprawidłowymi ustawieniami uprawnień. Ale program nigdy nie powinien w żadnym wypadku zakładać, że plik istnieje. Jeśli nie istnieje, należy go po prostu utworzyć.
Jo-Erlend Schinstad
1
Nie sugeruję, aby umieścić go w „aplikacji startowej”, które prawdopodobnie są uruchamiane po tym user-dirs-update-gtkglobalnym skryptu startowego. W przypadku innego użytkownika musisz zmienić usernameskrypt. Wreszcie konto gościa nie ma trwałego katalogu domowego, więc skrypt nie jest potrzebny dla tego konta.
enzotib
6

Opisujesz sesję gościa. Nie jestem do końca pewien, jak to działa, ale w 11.10 jest domyślnie pokazane na ekranie powitalnym. To konto robi dokładnie to, co chcesz, więc pytanie brzmi, czy chcesz poświęcić czas na odtworzenie go 11.04, czy też wolisz poczekać, aż poczujesz się komfortowo z uaktualnieniem do wersji 11.10. W czwartek wchodzi do wersji beta 1. W każdym razie pobieranie i uruchamianie sesji na żywo nie boli. Jeśli jest dokładnie tak, jak chcesz, będziesz wiedział, jak go odtworzyć.

Jo-Erlend Schinstad
źródło
2

Utwórz skrypt o wybranej nazwie i dodaj tę treść:

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

Zapisz ten plik, oznacz go jako wykonywalny i dodaj do aplikacji uruchamiających (dla konta, które musi zostać wyczyszczone).

Spowoduje to wyczyszczenie wszystkich plików w tych katalogach. Jednak ~/samo oczyszczenie zawartości jest nieco bardziej skomplikowane i zaktualizuję swoją odpowiedź, jeśli znajdę bezpieczny sposób.

RolandiXor
źródło
1

Możesz zrobić coś takiego

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

Zapisz to jako coś w stylu cleanup.shi zrób to za pomocą chmod +x cleanup.sh. Następnie możesz zadzwonić ./cleanup. Pamiętaj, że spowoduje to usunięcie wszystkiego z tych folderów, używaj ostrożnie. Pamiętaj, aby zmienić „Gość” na nazwę użytkownika.

Możesz uruchomić go podczas uruchamiania, dodając go do preferencji aplikacji startowych.

Możesz również dodać ten skrypt jako zadanie crona w systemie, aby działał on co noc. Zobacz tutaj, aby uzyskać więcej informacji o zadaniach cron.

Kris Harper
źródło
lol twoja odpowiedź jest lepsza niż moja: D! Btw zmień -rf na -r, ponieważ jest to bezpieczniejsze.
RolandiXor
@Roland: niekoniecznie bezpieczniejszy, a nawet możliwa pułapka: -fzapobiega pytaniu o usunięcie plików tylko do odczytu (pliki bez zestawu bitów zapisu) i usuwa je bez potwierdzenia. Usuwając -f, użytkownik może zapobiec usunięciu dowolnego pliku, tworząc /home/Guest/Desktop/000000000go i ustawiając jako tylko do odczytu. Spowoduje to, że skrypt zawiesi się z ukrytym potwierdzeniem, a tym samym nie będzie kontynuował usuwania plików. Firefox jest znany z pobierania plików tylko do odczytu.
Lekensteyn,
Dlatego pierwotnie to załączyłem. Nie chciałem, aby skrypt zawiódł w przypadku pliku tylko do odczytu. Uznałem również, że i tak był to dość niszczycielski skrypt, więc dodanie -fflagi nie zaszkodzi zbytnio. Mogę dodać to z powrotem.
Kris Harper