若相依 发表于 2015-1-18 11:18:34

Linux编程:接纳站功能在 Linux 中的完成仓酷云

系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last
本文模仿Windows接纳站的功效,使用Bash剧本在Linux上做了完成,创立delete剧本取代rm命令对文件或目次举行删除操做。该剧本完成了以下功效:对年夜于2G的文件或目次间接删除,不然放进$HOME/trash目次下;恢复trash目次中的被删除文件到原目次下;文件寄存在trash目次中凌驾七天被主动删除。
概述

删除是伤害系数很高的操纵,一旦误删大概会形成无法计算的丧失。在Linux体系中这类伤害尤其分明,一条复杂的语句:rm–rf/*就会把全部体系全体删除,而Linux其实不会由于这条语句的分歧理而回绝实行。在Windows中,为了避免误删,体系供应了接纳站功效。用户在实行删除操纵后,文件其实不会间接从硬盘中删除,而是被放到接纳站中。在清空接纳站前,假如发明有文件被误删,用户能够将接纳站中的文件恢复到本来的地位。而Linux并没有供应相似功效,删除命令rm一旦确认实行,文件就会间接从体系中删除,很难恢复。
接纳站组成

本文共用三个剧本完成了接纳站的次要功效:Delete剧本、logTrashDir剧本和restoreTrash剧本。个中Delete剧本是中心剧本,其感化是从头封装rm命令。相对rm的间接删除,该命令会先将文件或目次挪动到$home/trash目次下。假如用户想要将文件间接删除,能够用-f选项,delete剧本会间接挪用rm–f命令将文件从硬盘上删除。logTrashDir剧本用于将被删除文件的信息纪录到trash目次下的一个埋没文件中。restoreTrash剧本用来将放进trash中的文件或目次从头恢复到原路径下。在Linux体系中,只需将这三个剧本放到/bin/目次下,并用chmod+Xfilename付与可实行权限,便可间接利用。上面将先容每一个剧本的次要部分
Delete剧本

创立目次

起首要创立目次来寄存被删除的文件,本文在用户根目次$HOME下创建trash目次来寄存文件。详细代码以下:
清单1.创立接纳站目次

1
2
3
4
5
6
realrm="/bin/rm"
if[!-d~/trash]
then
mkdir-v~/trash
chmod777~/trash
fi

如上所示,先判别目次是不是已创建,如未创建,即第一次运转该剧本,则创立trash目次。变量realrm寄存了Linux的rm剧本地位,用于在特定前提下挪用以间接删除文件或目次。
输入匡助信息

该剧本在用户仅输出剧本名而未输出参数实行时,输入扼要匡助信息,代码以下:
清单2.输入匡助信息

1
2
3
4
if[$#-eq0]
then
echo"Usage:deletefile1"
echo"Iftheoptionscontain-f,thenthescriptwillexecrmdirectly"

如代码所示,该剧本的使用格局是delete后跟要删除的文件或目次的路径,两头用空格离隔。
间接删除文件

有些用户确认生效并想间接删除的文件,不该放进接纳站中,而应间接从硬盘中删除。Delete剧本供应了-f选项来实行这项操纵:
清单3.间接删除文件

1
2
3
4
5
6
7
8
9
10
11
12
whilegetopts"dfiPRrvW"opt
do
case$optin
f)
exec$realrm"$@"
;;
*)
#donothing
;;
esac
done

假如用户在命令中到场了-f选项,则delete剧本会间接挪用rm命令将文件或目次间接删除。如代码中所示,一切的参数包含选项城市传送给rm命令。以是只需选项中包含选项-f就即是挪用rm命令,可使用rm的一切功效。如:delete–rfvfilename即是rm–rfvfilename。
用户交互

必要与用户确认是不是将文件放进接纳站。相称于Windows的弹窗提醒,避免用户误操纵。
清单4.用户交互

1
2
3
4
echo-ne"Areyousureyouwanttomovethefilestothetrash?:a"
readreply
if[$reply="y"-o$reply="Y"]
then#####

判别文件范例并间接删除年夜于2G文件

本剧本只对一般文件和目次做操纵,其他范例文件不做处置。先对每一个参数做轮回,判别他们的范例,关于切合的范例再判别他们的巨细是不是凌驾2G,假如是则间接从体系中删除,制止接纳站占用太年夜的硬盘空间。
清单5.删除年夜于2G的文件

<p>1
2
3
4
5
6
7
8
9
10
11
12
forfilein$@
do
if[-f"$file"&ndash;o&ndash;d"$file"]
then
if[-f"$file"]&&[`ls&ndash;l$file|awk{print$5}`-gt2147483648]
then
<p>echo

再现理想 发表于 2015-1-20 19:54:52

然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。

不帅 发表于 2015-1-21 21:37:02

Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。

老尸 发表于 2015-1-25 11:01:50

下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。

因胸联盟 发表于 2015-1-26 15:37:50

首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。

柔情似水 发表于 2015-2-4 15:14:10

硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。

莫相离 发表于 2015-2-6 14:26:40

最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。

兰色精灵 发表于 2015-2-7 13:16:31

Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。

若天明 发表于 2015-2-19 12:21:26

虽然大家都比较喜欢漂亮的mm,但是在学 linux 的过程中,还是要多和“男人”接触一下:P 遇到问题的时候,出来看说和上网查之外,就是要多用 linux 下的 man 命令找找帮助。

海妖 发表于 2015-3-1 21:04:41

在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。

第二个灵魂 发表于 2015-3-10 23:44:12

Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。

小妖女 发表于 2015-3-17 16:08:11

了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。

飘灵儿 发表于 2015-3-17 16:08:12

随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).

飘飘悠悠 发表于 2015-3-24 10:36:00

我想即使Linux高手也很难快速准确精练的回答你。
页: [1]
查看完整版本: Linux编程:接纳站功效在 Linux 中的完成仓酷云