Linux与UNIX shell编程指南

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《LINUX与UNIXSHELL编程指南》读书笔记二次发布版张启峰Email:zqf620@gmail.com一些废话这是笔者第一本发到网络上的Linux读书笔记,利用今年十一长假,重新编辑排版了一下,再次发到网上,姑且称为“二次发布版”吧!关于《LINUX与UNIXSHELL编程指南》这本书,我看的是chinapub.com的电子版,在很多网站都可以下载到。虽然看电子书很累人,但我还是建议不想掏钱买书的朋友看看(有钱也不一定买的到,反正我逛书店时就没有看到过有卖这本书的),它不愧为一本经典的讲解shell编程的书。当初,写这本笔记时,花了很大的力气。参考了不少资料,在我认为书中某些讲的不详细的地方,在笔记中也记述的很详细。读者可以发现,这本笔记并不是简单的摘抄。当然,记笔记的过程也是对我的一个提高,比如,awk和脚本编程中可以遇到的getopts,这两个东东我一直就没搞清楚,记笔记的过程中我就把它们搞清白了(我个人认为关键是要静下心来学)。希望这本笔记能对读者您有所帮助!在笔记中给出了很多举例,这些例子都在RedHatLinux9和RedFlagAdvancedServer4.1中测试通过,大多数例子还给出了注释(使用C风格的双斜线”//”注释符号)。好了,不再废话了。最后,给您推荐两本书,都是美国佬写的。一本是机械工业出版社出版的O'Reilly的《学习Bash(第二版)》,一本是人民邮电出版社出版的Sams的《精通Shell编程(第二版)》。张启峰(zqf620@gmail.com)2005年10月4日第一部分SHELL第1章文件安全与权限1.一个文件一经创建,就具有三种基本访问方式:1)读(r):可以显示该文件的内容。2)写(w):可以编辑或删除它。3)执行(x):如果该文件是一个shell脚本或程序的话。2.按照所针对的用户,文件的权限可分为三类:1)文件属主:创建该文件的用户。2)同组用户:拥有该文件的用户组中的任何用户。3)其他用户:即不属于拥有该文件的用户组的某一用户。3.ls-l(列出目录内容)命令的输出的分析drwxr-xr-x2rootroot4096Oct1420:18bin1)第1个部分第1个字符:表示文件的类型,详细说明见下。2)第1个部分第2-10个字符:分为3组(triplet),分别表示文件的属主、组用户和其它用户的权限。3)第2个部分:表示该文件的硬链接的数目。4)第3个部分:表示文件的属主。5)第4个部分:文件的属主(root)所在的缺省组(也是root组)。6)第5个部分:表示文件的长度(以字节byte为单位)。7)第6-7个部分:Oct1420:18表示文件的更新时间。8)第8个部分:该文件的文件名。4.文件的类型1)d:目录文件,目录也是一种文件(directory)2)l:符号链接(指向另一个文件)(link)3)b:块设备文件(blockdevice)4)c:字符设备文件(charactordevice)5)p:命名管道文件(namedpiple)6)s:套接字文件(socket)7)-:普通文件,或者更准确地说,不属于以上几种类型的文件5.文件的权限位1)一个文件的权限位由9个字符组成,分成3个triplet,分别表示文件属主(owner)、文件属主所属缺省组的用户(group)、系统中其他用户(other)所拥有的权限。《LINUX与UNIXSHELL编程指南》读书笔记第1页,共58页2)一个triplet由3个字符位组成(rwx),分别表示可读、可写、可执行。如果对应位置的字符是-,表示不具有对应权限。eg:rw-表示可读写,不可执行r--表示可读,不可写、执行3)在文件权限位的ownertriplet第3个位置的字符如果设置为s,称为SUID。当某用户执行该文件时,系统用文件owner的uid替代实际执行该文件的用户的uid,文件会认为是owner在执行它。4)在文件权限位的grouptriplet第3个位置的字符如果设置为s,称为SGID。当某用户执行该文件时,系统用文件组拥有者的gid替代实际执行该文件的用户的gid。当在某个目录文件上设置SGID时候,则在该目录下的所有文件和子目录都会继承使用该目录的GID来代替实际执行者的GID。5)文件设置了SUID或SGID,一般来说文件的owner或group应该有执行(x)权限。如果没有x权限,设置SUID或SGID是没有意义的,triplet上第3个字符就会是S(大写)而不是s(小写)。eg:rwSr-Sr--6)给可执行文件设置SUID/SGID可能带来安全风险,许多系统因而忽略SUID/SGID权限设置7)在某些目录(如/tmp)的othertriplet的第3个字符设置为t。一般来说,在目录的othertriplet上设置w和x权限,则任何用户都可以在该目录下执行、删除文件,而设置t的作用就是保证非目录的owner用户不能删除目录下的文件。6.使用chmod命令改变权限位1)符号模式Usage:chmod[who]operatorpermfile_name①who:可以是ugoa,表示给文件的owner、group、other和all用户设置权限。省略时默认为a。②operator:可以是+-=,分别表示增加、取消、指定权限③perm:可以是rwxs(suid和guid)t(粘性位)l(给文件加锁,使其他用户无法访问)④举例:chmodu+xwo-wmyfile//给myfile的owner增加xw权限,去除other用户的w权限2)绝对模式Usage:chmodmodefile_name①mode:4位8进制数,每一位分别用于SUID和SGID、属主权限、组权限、其他用户权限。当用户给出的mod值小于4位时,系统会在数字前面加0补齐。②权限rwx分别用数字421表示,suidguid用42表示,各个triplet的数字相加可得mod值。eg:rwxr-xr--为754,rwsr-xr-x为4755,rwsr-sr-x为6755-rwxrwSr--为27647.目录文件的权限(rwx)的含义1)r:可以列出该目录中的内容。2)w:可以在目录中创建、修改文件。目录的w位不设置,即使拥有目录中某文件的w权限也不能写该文件。3)x:可以搜索和访问该目录。x位不设置,不能访问目录下的任何文件,即使拥有文件的权限。8.chown和chgrp修改文件的拥有权1)chownUsage:chown[选项][owner][.group]file_name《LINUX与UNIXSHELL编程指南》读书笔记第2页,共58页①创建文件时,文件预设owner就是创建该文件的用户,预设所属组(group)就是owner所属的缺省组。只有文件的owner和系统管理员才可以改变文件的拥有权,改变一个文件的owner时,相应的suid也将被清除。②chmod的常用选项:-R对指定目录所有文件和子目录递归式地进行同样的操作-h如果file_name是符号链接,则只对符号链接本身进行操作③owner和.group表示文件拥有者名和文件所属组名,可以使用uid/gid表示。两者不能同时省略④举例:chownhttp.http/etc/httpd//将目录/etc/httpd的属主修改为http,组修改为http2)chgrpUsage:chgrp[选项]groupfile_name①chgrp命令只能用来修改文件的所属组。chgrp和chown用法类似,选项也一样。②举例:chownhttp/etc/httpd//将目录/etc/httpd的所属组修改为http3)查询用户信息和用户所属组信息id[user_name]或groups[user_name]8.umask确定系统创建文件时的缺省权限位。1)Usage:umask[umask_mod]2)umask_mod的计算方法:umask_mod=777-文件缺省权限值。3)系统不允许你在创建一个文件时就赋予它执行权限,即umask_mod为002时,创建文件的缺省权限值为665,创建目录的缺省权限值为775。9.符号链接1)Usage:ln-ssource_pathtarget_path2)存在2种类型的链接:硬链接和软链接。软链接又称位符号链接,符号链接实际上是指向一个文件的指针,符号链接和WindowsOS的快捷方式有点类似。3)不管是否在同一个文件系统中,都可以创建链接。在创建链接的时候,不要忘记在原有目录设置执行权限。链接一旦创建,链接目录将具有权限777(rwxrwxrwx),但是实际的原有文件的权限并未改变。4)举例:ln-s/var/tmp/home/zqf/tmp//在zqf主目录创建一个名为tmp,指向/var/tmp的符号链接第2章使用find和xargs1.有时可能需要在系统中查找具有某一特征的文件(如文件权限、文件属主、文件长度、文件类型等)。find是一个非常有效的工具,它可以递归式遍历当前目录甚至于整个文件系统(本地和网络文件系统)来查找某些文件或目录,只要你具有相应的文件或目录的权限。2.find命令的使用1)Usage:find[path_name...][expression]《LINUX与UNIXSHELL编程指南》读书笔记第3页,共58页2)path_name:用于指定要搜索的目录,可以是以空格分隔的多个目录路径的列表。如果省略此参数,默认使用当前目录。3)expression:用于指定搜索的方式、条件和要执行的操作等。如果expression省略,则默认使用-print作为expression。expression可由4类项目组成:①OPTION(选项):用于指定find命令的搜索方式,一般把OPTION放在expression的开头。②TEST(测试):用于指定find命令的检索条件,只有符号条件的文件才会被指定的ACTION处理。③ACTION(操作):用于指定对find的搜索结果执行的操作。省略ACTION时预设为-print。④OPERATOR(运算):对TEST或ACTION进行与、或、非等运算。4)find在执行时,一般会将第1个-字符之后的命令行参数都看作expression,把之前的参数都看作为要搜索的路径。3.常用的OPTION项目0)OPTION项目可以省略,find默认从指定路径目录开始递归地向下层子目录搜索。1)-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。2)-maxdepthlevel:进入指定的目录下层目录搜索时,昀深不超过level(一个非负整数)层。eg:find.-maxdepth0-name1//只在当前目录而不向下层子目录搜索名为1的文件或目录3)-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。4)-mount:不搜索其它文件系统上的目录(不跨越文件系统mount点)。5)-daystart:从当日起始时开始而不是从24小时之前开始计算时间(如-amin,-atime,-cmin,-ctime,-mmin和-mtime)。6)-noleaf:不为目录中子目录数量比硬链接数少2这种假设做优化。这个选项在搜索那些不遵循UNIX文件系统链接约定的文件系统(比如CD-ROM,MS-DOS文件系统或AFS卷的加载点)时使用。在普通的UNIX文件系统中,每个目录至少有两个硬链接:它的名字和它的'.'条目。另外,它的每个子目录(假如有的话)还会各有一个'..'链接到它。在find检索一个目录时,发现子目录数比它的链接数少二时,它就知道目录中的其他条目并非目录(而是目录树中的叶(`leaf')节点)。除非需要检索的是这个叶节点,否则没必要去处理它。这样可以带来很大的搜索搜索速度的提升。4.常用的TEST项目0)在TEST项目的一些选项中有时会使用数字,数字N(非负整数)可以以3种形式给出:+N表示比N大,-N表示比N小,N表示正好是N1)-namePAT

1 / 60
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功