在计算机启动时,如何编写一个小的脚本来清理每个目录的文件?


9

我有一台访客计算机,仅供互联网使用。一些用户下载了一些文件并将其留在桌面上,但是计算机没有足够的空间供所有来宾使用,因此不允许在其中放置文件。

我要做的是在计算机启动时清理主目录中的每个文件,但保留目录结构,例如音乐,图片,文档和下载。

我该怎么做?


对几乎所有人:您的答案-对不起-很烂,您知道的。如果客人选择其他语言怎么办?所有那些隐藏的配置和缓存文件(浏览器历史记录,废纸,, ...)呢?相反,应该有一个不会删除的文件白名单(根据Roland Taylor的说法)。此外,您应该考虑使用xdg-user-dir~/.config/user-dirs.dirs作为默认目录。
dAnjou 2011年

@dAnjou:使用我的解决方案,将根据所选语言创建home中的标准文件夹。另外,OP似乎要求一个干净的环境,因此我不明白为什么要拥有所谓的“白名单”。
enzotib

1
@enzotib:好的,抱歉。显然,罗兰·泰勒(和我)是错的。我不知道是什么打击了我。您可以编辑你的答案,并添加可能把你的脚本转换/etc/gdm/PostSession或者/etc/gdm/PreSession,这样我可以收回我的downvote?
2011年

Answers:


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 2011年

1
@danjjl:此选项使bash *与所有文件和目录匹配,即使是隐藏的也是如此。
enzotib

1
否,缺少文件不会阻止您登录。缺少主目录可能会导致问题或文件权限设置错误。但是程序在任何情况下都不应假定文件存在。如果不存在,则应创建它。
2011年

1
我不建议把它放在“启动应用程序”,这很可能运行user-dirs-update-gtk全球启动脚本。对于另一个用户,您必须username在脚本中进行更改。最后,来宾帐户没有持久性主目录,因此该帐户不需要脚本。
enzotib 2011年

6

您正在描述访客会话。我不完全确定它是如何工作的,但是在11.10中默认情况下会在欢迎屏幕中显示它。该帐户完全可以满足您的需求,所以问题是您是否想花时间尝试在11.04上重新创建它,还是想等到对升级到11.10满意为止。它将于周四进入Beta 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!顺便说一句,将-rf更改为-r,因为那样更安全。
RolandiXor

@Roland:不一定更安全,甚至有可能的陷阱:-f防止要求删除只读文件(未设置写位的文件)并删除未确认的文件。通过删除-f,用户可以通过创建/home/Guest/Desktop/000000000文件并将其设置为只读来防止任何文件被删除。这将使脚本以隐藏的确认挂起,从而无法继续删除文件。众所周知,Firefox进行只读下载。
Lekensteyn 2011年

这就是为什么我最初将其包括在内。我不希望脚本在出现只读文件的情况下失败。我也认为这是一个非常具有破坏性的脚本,因此添加该-f标志不会有多大伤害。我可以将它添加回来。
克里斯哈珀
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.