Як я можу написати невеликий сценарій, щоб очистити файли кожного каталогу під час запуску комп'ютера?


9

У мене є гостьовий комп’ютер для використання лише в Інтернеті. Деякі користувачі завантажують деякі файли і залишають їх на робочому столі, але на комп’ютері не вистачає місця для всіх гостей, і там заборонено розміщувати файл.

Що я хочу зробити, це очистити кожен файл у домашньому каталозі під час запуску комп'ютера, але зберегти структуру каталогу, як-от Музика, Зображення, Документи та Завантаження.

Як я можу це досягти?


Майже всім: ваші відповіді - вибачте - смокчуть, і ви це знаєте. Що робити, якщо гість вибере іншу мову? Що з усіма цими прихованими конфігураційними файлами та кеш-файлами (історія браузера, сміття, ...)? Більше має бути білий список файлів, які не будуть видалені (за словами Роланда Тейлора). Крім того, слід розглянути можливість використання xdg-user-dirта ~/.config/user-dirs.dirsкаталогів за замовчуванням.
dAnjou

@dAnjou: з моїм рішенням стандартні папки в домашніх умовах будуть створені відповідно до обраної мови. Крім того, ОП, здається, вимагає чистого середовища, тому я не можу зрозуміти, навіщо мати те, що ви називаєте "білим списком".
enzotib

1
@enzotib: Добре, вибачте. Мабуть, Роланд Тейлор (і я) помилявся. Я не знаю, що мене вдарило. Чи можете ви відредагувати свою відповідь і додати можливість розмістити свій скрипт /etc/gdm/PostSessionабо /etc/gdm/PreSessionтак, щоб я міг забрати свій голос?
dAnjou

Відповіді:


14

Ви можете безпечно видалити всі файли з домашнього каталогу, оскільки вони відтворені, окрім файлів, скопійованих під час створення користувача з /etc/skel,

#!/bin/bash

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

де usernameслід замінити чимось значущим.

За вашим запитом ("коли комп'ютер запускається") це може бути виконано з /etc/rc.local. Швидше за все, ви хочете виконати його між кожним для входу, тому поставте його під /etc/gdm/PostSessionабо /etc/gdm/PreSession.


Ви знаєте, що є деякі файли, які, якщо їх видалити, не дозволять вам увійти?
RolandiXor

@ Роланд Тейлор: який файл? Я тільки перевірив видалення всіх файлів
enzotib

1
@danjjl: ця опція дозволяє збігати bash *з усіма файлами та каталогами, навіть з прихованими.
enzotib

1
ні, відсутні файли не завадять увійти в систему. Відсутній домашній каталог може спричинити проблеми або файли із встановленими неправильними дозволами. Але програма ні за яких обставин не повинна вважати, що існує файл. Якщо його не існує, його слід просто створити.
Жо-Ерленд Шінстад

1
Я не пропоную , щоб помістити його в «запуску програми», які, ймовірно , бігти після того, як в user-dirs-update-gtkглобальному сценарії запуску. Для іншого користувача потрібно змінити usernameсценарій. Нарешті, в обліковому записі гостя немає стійкого домашнього каталогу, тому сценарій для цього облікового запису не потрібен.
enzotib

6

Ви описуєте гостьовий сеанс. Я не зовсім впевнений, як це працює, але в 11.10 він відображається за замовчуванням на екрані привітання. Цей обліковий запис робить саме те, що ви хочете, і питання полягає в тому, чи хочете ви витратити час на те, щоб відтворити його 11.04 або якщо ви хочете зачекати, поки вам не зручно оновити до 11.10. Він входить у бета-1 у четвер. У будь-якому випадку, не завадить завантажувати та завантажувати живу сесію та бачити, як вам це подобається. Якщо це саме так, як ви цього хочете, тоді ви знатимете, як відтворити його.


2

Створіть сценарій із вибраним ім'ям та додайте цей вміст:

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

Збережіть цей файл, позначте його як виконуваний файл і додайте його до своїх запуску програм (для облікового запису, який потрібно очистити).

Це очистить усі файли в цих каталогах. Однак очистити вміст ~/себе трохи складніше, і я оновлю свою відповідь, якщо знайду безпечний спосіб зробити це.


1

Ви могли зробити щось подібне

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

Збережіть це як щось подібне cleanup.shта зробіть його виконуваним chmod +x cleanup.sh. Тоді ви можете зателефонувати ./cleanup. Зауважте, що це видаляє все з цих папок, використовуйте обережно. Не забудьте змінити "Гість" на ім'я вашого користувача.

Ви можете зробити цей запуск при запуску, додавши його до налаштувань програм запуску.

Ви також можете додати цей скрипт як роботу із системою cron у вашій системі, щоб він працював щовечора. Дивіться тут для отримання додаткової інформації про роботу в Cron.


хай ваша відповідь краще, ніж моя: D! Btw змінити -rf на -r, як це безпечніше.
RolandiXor

@Roland: не обов'язково більш безпечний і навіть можливий підводний камінь: -fне дозволяє запитувати про видалення файлів лише для читання (файлів без набору бітів запису) та видаляє їх без підтвердження. Видаляючи -f, користувач може запобігти видаленню будь-якого файлу, створивши /home/Guest/Desktop/000000000файл і зробивши його лише для читання. Це зробить сценарій висячим із прихованим підтвердженням і тим самим не продовжить видалення файлів. Firefox, як відомо, робить завантаження лише для читання.
Лекенштейн

Ось чому я спочатку включив його. Я не хотів, щоб сценарій вийшов з ладу у випадку, коли файл, який читається лише для читання. Я також подумав, оскільки це все одно був досить руйнівний сценарій, додавши, що -fпрапор не зашкодить сильно. Я можу додати його ще раз.
Кріс Харпер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.