linux考试复习资料 16页

  • 107.00 KB
  • 2022-07-30 发布

linux考试复习资料

  • 16页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
1.常用的文件和目录命令:拷贝、剪切、粘贴;书P94-95$cp-itest1.c/usr/cpp/test2.c将文件test1.c拷贝到/usr/cpp这个目录下,并改名为test2.c。cp/etc/aaa.gz/tmp将文件从/etc/aaa.gz拷贝到/tmp目录下cp–rf/etc/aaa.gz/tmp将/etc目录下aaa.gz文件拷贝到/tmp不提示确认cp–r/home/test/home将/home下的test目录及test下的文件全部复制到/home下cp执行复制粘贴mv执行剪切粘贴2.ls-la所列文件列表具体解释权限硬连接数所有者所有属组大小最后修改日期文件名文件名以”.”开头的是隐藏文件3.写一条命令,删除某个目录下的所有文件和子目录书P95rm-rf/home/ivenyl删除/home/ivenyl目录下所有文件且不提示4.写一段shell程序,删除指定目录下的所有文件和子目录。住:必须使用forin语句\n如:my_deletexxx例:删除/home/test(包括test)目录fornamein/home/testdorm-rf$namedone5.写一段shell程序,打印指定目录下的所有文件和子目录。注:必须使用forin语句如:my_displayxxx例fornamein/home/testdols–la$namedone6.统计文件字数、行数、字节数的命令。书P96例如:$wc-lcwawk.sh行数字数字节数文件名省略任选项-lcw,wc命令的执行结果与上面一样7.写一条命令统计某个文件前20行的字数。$head20test.c|wc–w显示test.c文件前20行并统计字数8.写一条命令统计某个文件倒数3行的字节数。$tail3test.c|wc–c显示test.c文件后3行字节数9.各种查找命令,重点是grep。书P102grep用法:1、grep-l'boss'*  显示所有包含boss的文件名。2、grep-n'boss'file在匹配行之前加行号。3、grep-i'boss'file显示匹配行,boss不区分大小写。4、grep-v'boss'file显示所有不匹配行。5、grep-q'boss'file找到匹配行,但不显示,但可以检查grep的退出状态。(0为匹配成功)6、grep-c'boss'file只显示匹配行数(包括0)。7、grep  "$boss"\nfile扩展变量boss的值再执行命令。8、ps-ef|grep"^*user1"搜索user1的命令,即使它前面有零个或多个空格。9、ps-e|grep-E'grant_server|commsvr|tcpsvr|dainfo'查找多个字符串的匹配(grep-E相当于egrep)grep用法详解:grep与正则表达式首先要记住的是:正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。vim、grep、awk、sed都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以前上班的公司里,由于公司是基于web的服务型网站(nginx),对正则的需求比较大,所以也花了点时间研究正则,特与大家分享下:1基础正则表达式grep工具,以前介绍过。grep-[acinv]'搜索内容串'filename-a以文本文件方式搜索-c计算找到的符合行的次数-i忽略大小写-n顺便输出行号-v反向选择,即找没有搜索字符串的行其中搜索串可以是正则表达式!\n1搜索有the的行,并输出行号$grep-n'the'regular_express.txt搜索没有the的行,并输出行号$grep-nv'the'regular_express.txt2利用[]搜索集合字符[]表示其中的某一个字符,例如[ade]表示a或d或ewoody@xiaoc:~/tmp$grep-n't[ae]st'regular_express.txt8:Ican'tfinishthetest.9:Oh!thesouptastegood!可以用^符号做[]内的前缀,表示除[]内的字符之外的字符。比如搜索oo前没有g的字符串所在的行.使用'[^g]oo'作搜索字符串woody@xiaoc:~/tmp$grep-n'[^g]oo'regular_express.txt2:appleismyfavoritefood.3:Footballgameisnotusefeetonly.18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes![]内可以用范围表示,比如[a-z]表示小写字母,[0-9]表示0~9的数字,[A-Z]则是大写字母们。[a-zA-Z0-9]表示所有数字与英文字符。当然也可以配合^来排除字符。搜索包含数字的行woody@xiaoc:~/tmp$grep-n'[0-9]'regular_express.txt5:However,thisdressisabout$3183dollars.15:Youarethebestismenuyouaretheno.1.行首与行尾字符^$.^表示行的开头,$表示行的结尾(不是字符,是位置)那么‘^$’就表示空行,因为只有行首和行尾。\n这里^与[]里面使用的^意义不同。它表示^后面的串是在行的开头。比如搜索the在开头的行woody@xiaoc:~/tmp$grep-n'^the'regular_express.txt12:thesymbol'*'isrepresentedasstar.搜索以小写字母开头的行woody@xiaoc:~/tmp$grep-n'^[a-z]'regular_express.txt2:appleismyfavoritefood.4:thisdressdoesn'tfitme.10:motorcycleischeapthancar.12:thesymbol'*'isrepresentedasstar.18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!20:go!go!Let'sgo.woody@xiaoc:~/tmp$搜索开头不是英文字母的行woody@xiaoc:~/tmp$grep-n'^[^a-zA-Z]'regular_express.txt1:"OpenSource"isagoodmechanismtodevelopprograms.21:#IamVBirdwoody@xiaoc:~/tmp$$表示它前面的串是在行的结尾,比如'\.'表示.在一行的结尾搜索末尾是.的行woody@xiaoc:~/tmp$grep-n'\.$'regular_express.txt//.是正则表达式的特殊符号,所以要用\转义1:"OpenSource"isagoodmechanismtodevelopprograms.2:appleismyfavoritefood.3:Footballgameisnotusefeetonly.4:thisdressdoesn'tfitme.5:However,thisdressisabout$3183dollars.6:GNUisfreeairnotfreebeer......注意在MS的系统下生成的文本文件,换行会加上一个^M字符。所以最后的字符会是隐藏的^M\n,在处理Windows下面的文本时要特别注意!可以用catdos_file|tr-d'\r'>unix_file来删除^M符号。^M==\r那么'^$'就表示只有行首行尾的空行拉!搜索空行woody@xiaoc:~/tmp$grep-n'^$'regular_express.txt22:23:woody@xiaoc:~/tmp$搜索非空行woody@xiaoc:~/tmp$grep-vn'^$'regular_express.txt1:"OpenSource"isagoodmechanismtodevelopprograms.2:appleismyfavoritefood.3:Footballgameisnotusefeetonly.4:thisdressdoesn'tfitme...........任意一个字符.与重复字符*在bash中*代表通配符,用来代表任意个字符,但是在正则表达式中,他含义不同,*表示有0个或多个某个字符。例如oo*,表示第一个o一定存在,第二个o可以有一个或多个,也可以没有,因此代表至少一个o.点.代表一个任意字符,必须存在。g??d可以用'g..d'表示。good,gxxd,gabd.....都符合。woody@xiaoc:~/tmp$grep-n'g..d'regular_express.txt1:"OpenSource"isagoodmechanismtodevelopprograms.9:Oh!thesouptastegood!16:Theworldisthesamewith'glad'.woody@xiaoc:~/tmp$\n搜索两个o以上的字符串woody@xiaoc:~/tmp$grep-n'ooo*'regular_express.txt//前两个o一定存在,第三个o可没有,也可有多个。1:"OpenSource"isagoodmechanismtodevelopprograms.2:appleismyfavoritefood.3:Footballgameisnotusefeetonly.9:Oh!thesouptastegood!18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!搜索g开头和结尾,中间是至少一个o的字符串,即gog,goog....gooog...等woody@xiaoc:~/tmp$grep-n'goo*g'regular_express.txt18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!搜索g开头和结尾的字符串在的行woody@xiaoc:~/tmp$grep-n'g.*g'regular_express.txt    //.*表示0个或多个任意字符1:"OpenSource"isagoodmechanismtodevelopprograms.14:Thegdsoftwareisalibraryfordraftingprograms.18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!20:go!go!Let'sgo.限定连续重复字符的范围{}.*只能限制0个或多个,如果要确切的限制字符重复数量,就用{范围}。范围是数字用,隔开2,5表示2~5个,2表示2个,2,表示2到更多个注意,由于{\n}在SHELL中有特殊意义,因此作为正则表达式用的时候要用\转义一下。搜索包含两个o的字符串的行。woody@xiaoc:~/tmp$grep-n'o\{2\}'regular_express.txt1:"OpenSource"isagoodmechanismtodevelopprograms.2:appleismyfavoritefood.3:Footballgameisnotusefeetonly.9:Oh!thesouptastegood!18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!搜索g后面跟2~5个o,后面再跟一个g的字符串的行。woody@xiaoc:~/tmp$grep-n'go\{2,5\}g'regular_express.txt18:googleisthebesttoolsforsearchkeyword.搜索包含g后面跟2个以上o,后面再跟g的行。。woody@xiaoc:~/tmp$grep-n'go\{2,\}g'regular_express.txt18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!注意,相让[]中的^-不表现特殊意义,可以放在[]里面内容的后面。'[^a-z\.!^-]'表示没有小写字母,没有.没有!,没有空格,没有-的串,注意[]里面有个小空格。另外shell里面的反向选择为[!range],正则里面是[^range]2扩展正则表达式\n扩展正则表达式是对基础正则表达式添加了几个特殊构成的。它令某些操作更加方便。比如我们要去除空白行和行首为#的行,会这样用:woody@xiaoc:~/tmp$grep-v'^$'regular_express.txt|grep-v'^#'"OpenSource"isagoodmechanismtodevelopprograms.appleismyfavoritefood.Footballgameisnotusefeetonly.thisdressdoesn'tfitme.............然而使用支持扩展正则表达式的egrep与扩展特殊符号|,会方便许多。注意grep只支持基础表达式,而egrep支持扩展的,其实egrep是grep-E的别名而已。因此grep-E支持扩展正则。那么:woody@xiaoc:~/tmp$egrep-v'^$|^#'regular_express.txt"OpenSource"isagoodmechanismtodevelopprograms.appleismyfavoritefood.Footballgameisnotusefeetonly.thisdressdoesn'tfitme.....................这里|表示或的关系。即满足^$或者^#的字符串。这里列出几个扩展特殊符号:+,于.*作用类似,表示一个或多个重复字符。?,于.*作用类似,表示0个或一个字符。|,表示或关系,比如'gd|good|dog'表示有gd,good或dog的串(),将部分内容合成一个单元组。比如要搜索glad或good可以这样'g(la|oo)d'()的好处是可以对小组使用+?*等。比如要搜索A和C开头结尾,中间有至少一个(xyz)的串,可以这样:\n'A(xyz)+C'whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis命令的使用实例:$whereisgrepwhich命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。which命令的使用实例:  $whichgreplocate命令$locate/etc/sh搜索etc目录下所有sh开头的文件$locate~/m搜索用户主目录下所有以m开头的文件$locate–i~/m搜索用户主目录下所有以m开头的并忽略大小写Find的使用$find.-name‘my’搜索当前目录(含子目录)中,所有以my开头的文件$find.-name‘my’–ls同上,并且显示详细信息$find.-typef–mmin-10搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-typef参数,则搜索普通文件+特殊文件+目录。Typetype命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。type命令的使用实例:$typecd系统会提示,cd是shell的自带命令(build-in)。$typegrep系统会提示,grep是一个外部命令,并显示该命令的路径。$type-pgrep加上-p参数后,就相当于which命令。10.写一条命令在某个文件中查找所有以小写字母开始的,含有数字的单词。grep‘[a-z][0-9]’filename\n11.写一条命令查某个文件中所有2009年的日期格式,形如:xxxx-xx-xx或者xxxx:xx:xx,注意月份和日期的正确性。Grep“2009[-:][0-9]\{2\}[-:][0-9]\{2\}”finlename12.写一段程序,在某个c++源文件目录下查找所有.cpp文件,提取所有的类声明,并输出到某个文件中,例如,该目录下的某个.cpp文件中含有如下定义:classA{……}classB{……}那么目标文件中应该含有:classA;classB;find/home/stu1/linuxtest/c–name“*.cpp”|xargsgrep“class*”>>b12.txt三13.各种文件类型,如何创建两种链接文件,他们有何区别书P118——12014.用户和群组管理命令P129——15215.1)groupadd与groupdel只能创建和删除单个组,写可以创建和删除多个组的命令版本;用法如下:\ngroupaddTEST1TEST2#创建了两个组groupdelTEST1TEST2#删除了两个组P1401412)像上体的情形可能很多,写一个重复执行某命令的程序,用法如下:I=1each_dogroupaddTEST1TEST2each_dogroupdelTEST1TEST23)写一个程序读取/etc/passwd文件,列举本机上的所有用户,格式为:书P100姓名:###每行一个用户;Cut–f1–d:/etc/passwd4)修改上题,使之格式为:姓名:###uid:###Cut–f1,3–d:/etc/passwd5)修改上题,使之格式为:姓名:###uid:###所属组名:###Cut–f1,3,5–d:/etc/passwd16.你管理一个局域网,现要为单位员工建立相应的用户名和文件夹,单位给你的txt文件格式如下,一个考生信息占一行:姓名工号身份证号\nXXX001123455667要求登陆名使用工号,密码使用身份证号,在某个目录下为每个员工建立与该员工工号同名的文件夹,使该员工登陆后自动登陆到该文件夹下。说出步骤。书 P144——14517.写一段shell程序查询某个名为xxx的软件安装没有,如果没有,打印出“没有安装”echo"请输入你要查询的软件名:"readnameresult=$(rpm-qa|grep$name)if[!-n"$result"]thenecho"没有安装"elseecho"$result"fi18.写出一条命令,挂载文件系统是FAT32的U盘(移动硬盘)。mount-tvfat/dev/sdb1/mnt/usb19.修改文件权限的命令详细用法。chmod命令P208——21520.写出一条命令显示所以不带控制台终端的进程。书P231Ps–x21.service的详细用法。书P23922.如何将正在作业的进程放到后台执行?如何挂起作业后恢复执行?\n书P244Ctrl+zfg23.大致描述linux的日志系统。书P25524.如何修改本机IP地址,网关等信息?P279——P289#ifconfigeth0192.168.0.20netmask255.255.255.0启动生效:修改/etc/sysconfig/network-scripts/ifcfg-eth0修改defaultgateway即时生效:#routeadddefaultgw192.168.0.254启动生效:修改/etc/sysconfig/network-scripts/ifcfg-eth0修改dns修改/etc/resolv.conf修改后可即时生效,启动同样有效修改hostname即时生效:#hostnamefc2启动生效:修改/etc/sysconfig/network25.netstat,ifconfig,traceroute,tcpdump各种用法。同上26.静态配置路由器。P296——29927.简单描述如何配置telnet服务期(文件服务器,DHCP服务器,web服务器)\nP30530628.shell编程的基本知识。23章29.写一个查找指定目录下所有文件中包含指定字符串的脚本,用法:findindir'stdio''/tmp/*.cpp'在/tmp目录下查找所有后缀是cpp的文件中查找含有stdio的文件,并打印其名称:find/tmp-name“*.cpp”|xargsgrepstdio30.正则表达式:只含有字母和数字,下划线的单词(^|(?<=))[0-9a-zA-z_]+((?=)|$)后缀是.com,.cn的电子邮件地址.*@*.c[omn]202.202开始的ip地址202[.]202([.]([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))){2}正负小数[+-]([0-9]|[1-9][0-9]+)(\.[0-9]*)*整数^[+-]?\d*$31.写程序检验输入的一个数是否具有点分形式,是的话打印“yes”,否的话直接将其点分,并打印出来。32.英文输入中很常见的一种错误是连词,就是重复输入了同一个单词,例如thethestudent,写程序检查指定文件中的连词错误,打印出出错的行,并更正,将更正后的内容输出到另外一个文件中。\n33.写程序递归地统计某个目录及其子目录中的所有文件的单词个数,并将其打印出来。例如:my_cwxxx  递归地统计了xxx目录及其子目录中所有文件的单词个数。

相关文档