23 第五周作业

1、显示当前系统上rootfedorauser1用户的默认shell

答:Linux的哲学思想之一:组合单一目的的小程序,完成复杂任务;
第一步:使用扩展正则表达式egrep或grep –E显示出匹配到的用户信息;
^ :行首锚定,用于模式的最左侧;\>或\b:词尾锚定,用于单词模式的右侧;
[[email protected]~]# grep -E"^root\>|^fedora\>|^user1\>" /etc/passwd   
root:x:0:0:root:/root:/bin/bash
user1:x:508:508::/home/user1:/bin/bash
第二步:使用cut –d: 以冒号为分隔符,显示出匹配到的用户名及默认shell;
[[email protected]~]# grep -E"^root\>|^fedora\>|^user1\>" /etc/passwd | cut -d: -f1,7
root:/bin/bash
user1:/bin/bash

2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello()

答:
方法一:使用正则表达式grep过滤,-o 只显示匹配到的行,()不需要转义;
[[:alpha:]] 表示任意大小写字母;\+:匹配其前面的字符至少1次;
[[email protected]~]# grep -o "[[:alpha:]]\+()"/etc/rc.d/init.d/functions 
str()
checkpid()
readlink()
fgrep()
loop()
loop()
run()
pidof()
daemon()
killproc()
pidfileofproc()
pidofproc()
status()
success()
failure()
passed()
warning()
stage()
success()
failure()
passed()
warning()
action()
strstr()
confirm()
dev()
file()
true()
false()
sysctl()
random()
point()
crypto()
方法二:使用扩展正则表达式egrep或grep –E;()需要转义,写成\(\);
+:匹配其前面的字符至少1次;
[[email protected]~]# egrep -o"[[:alpha:]]+\(\)" /etc/rc.d/init.d/functions


3、使用echo命令输出一个绝对路径,使用grep取出其基名;扩展:取出其路径名;

答:
1)取出其基名
 [[email protected] ~]# echo "/tmp/mydir/text.txt" | grep -Eo "[^/]+/?$"
text.txt
[[email protected]~]# echo "/tmp/mydir/text.txt"| grep -Eo "[^/]+/?$" | cut -d"/" -f1
text.txt
说明:
[^]:指定范围外的任意单个字符;+:匹配其前面字符至少1次;
? :匹配其前面字符0次或1次;$ :行尾锚定,用于模式的最右侧;
/?是考虑到路径可能为目录;

2)取出其路径名
法一:
[[email protected]~]# echo "/tmp/mydir/text.txt"| grep -o "/[A-Za-z0-9]\+.*/"
/tmp/mydir/
法二:
[[email protected]~]# echo "/tmp/mydir/text.txt"| grep -o "/[[:alnum:]]\+.*/"
/tmp/mydir/
法三:使用egrep或grep –E
[[email protected]~]# echo "/tmp/mydir/text.txt"| egrep -o "/[[:alnum:]]+.*/"
/tmp/mydir/
说明:
[A-Za-z0-9]或[[:alnum:]] :表示任意单个字母或者数字;.*:任意长度的任意字符;
在基础正则表达式中,\+:匹配其前面的字符至少1次;
在扩展正则表达式中,+:匹配其前面的字符至少1次;
 
当然,还有一种获取基名和路径名的简单方式:
[[email protected]~]# basename /tmp/mydir/text.txt    #获取基名;
text.txt
[[email protected]~]# dirname /tmp/mydir/text.txt     #获取路径名;
/tmp/mydir


4、找出ifconfig命令结果中的1-255之间数字;

答:第一步,先用ifconfig命令查看下内容;
[[email protected]~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:02:12:34 
          inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr:fe80::20c:29ff:fe02:1234/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
          RX packets:5477 errors:0 dropped:0overruns:0 frame:0
          TX packets:4759 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:509600 (497.6 KiB)  TX bytes:2006936 (1.9 MiB)
 
lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536 Metric:1
          RX packets:0 errors:0 dropped:0overruns:0 frame:0
          TX packets:0 errors:0 dropped:0overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
第二步:需要把1-255分段处理,故分为:1-9,10-99,100-199,200-249,250-255;
[[email protected] ~]# ifconfig | egrep -o "\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][5][0-5]"       
29
12
34
192
168
1
110
192
168
1
255
255
255
255
64
1
9
1
9
127
1
255
1
128
1


5、挑战题:写一个模式,能匹配合理的IP地址;

答:
[[email protected] ~]# ifconfig | egrep -o"(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][5][0-5]\>)\.(\<[0-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][5][0-5]\>)\.(\<[0-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][5][0-5]\>).(\<[0-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][5][0-5]\>)"
192.168.1.110
192.168.1.255
255.255.255.0
127.0.0.1
255.0.0.0

6、挑战题:写一个模式,能匹配出所有的邮件地址;

答:
法一:
[[email protected] ~]# echo "email: [email protected]" | grep -o"\<[[:alnum:]]\+.*@[0-9a-z]\+\.[[:alpha:]]\+\>"
email: [email protected]
法二:
[[email protected] ~]# echo "email: [email protected]" | egrep -o"\<[[:alnum:]]+.*@[0-9a-z]+\.[[:alpha:]]+\>"
email: [email protected]
说明:
\<或\b:词首锚定,用于单词模式的左侧;\>或\b:词尾锚定,用于单词模式的右侧;
.*:任意长度的任意字符;\ . 是表示“.”本身;

7、查找/var目录下属主为root,且属组为mail的所有文件或目录;

答:
[[email protected]~]# find /var -user root -group mail -ls
261213    4 drwxrwxr-x   2 root    mail         4096 Aug 11 21:42/var/spool/mail

8、查找当前系统上没有属主或属组的文件;

答:
[[email protected]~]# find / -nouser -a -nogroup 
find:`/proc/4071/task/4071/fd/5‘: No such file or directory
find:`/proc/4071/task/4071/fdinfo/5‘: No such file or directory
find:`/proc/4071/fd/5‘: No such file or directory
find:`/proc/4071/fdinfo/5‘: No such file or directory

进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;

答:
[[email protected]~]# find / -nouser -a -nogroup -a -atime-3
find:`/proc/4072/task/4072/fd/5‘: No such file or directory
find:`/proc/4072/task/4072/fdinfo/5‘: No such file or directory
find:`/proc/4072/fd/5‘: No such file or directory
find:`/proc/4072/fdinfo/5‘: No such file or directory
说明:
-atime[+|-]# :按访问时间查找;以“天”为单位;#表示数字,天数;
         # :[#,#+1)
         +# :[#+1,oo)
         -# :[0,#)

9、查找/etc目录下所有用户都有写权限的文件;

答:
[[email protected] ~]# find /etc/-perm -222 -ls
说明:
-perm-MODE:每一类对象都必须同时拥有为其指定的权限标准;与关系;
      例如:-perm -666,那么766也符合标准;
-perm/MODE :任何一类(u,g,o)对象的权限中只要能有一位匹配即可;或关系;
    注意:在centos7上要用“/MODE”,+MODE不能使用;

10、查找/etc目录下大于1M,且类型为普通文件的所有文件;

答:
[[email protected]~]# find /etc/ -size +1M -a -type f -ls
14494697892 -rw-r--r-- 1 roo root 8080641 Aug 3 2015 /etc/selinux/targeted/policy/policy.24
1449466 7892 -rw-r--r-- 1 root root  8080641  Aug  3  2015/etc/selinux/targeted/modules/active/policy.kern
说明:
-size [+|-]#UNIT  :根据文件大小查找;#表示数字大小,UNIT表示单位;
    常用单位:k,M,G
    #UNIT :(#-1,#]          
    -#UNIT :[0,#-1]
    +#UNIT :(#,oo)
-typeTYPE:根据文件类型查找;
  f :普通文件;
  d :目录文件;
  l :符号链接文件;
  s :套接字文件;
  b :块设备文件;
  c :字符设备文件;
  p :管道文件;

11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;

答:
[[email protected]~]# find /etc/init.d  -perm -113 -ls
131027  0 lrwxrwxrwx   1 root  root   11 Jun 27 2015 /etc/init.d -> rc.d/init.d
说明:
-perm-MODE:每一类对象都必须同时拥有为其指定的权限标准;与关系;

12、查找/usr目录下不属于rootbinhadoop的文件;

答:
[[email protected]~]# find /usr/ -not \( -user root -o-user bin -o -user hadoop \) -ls 
267080   12 -rwsr-xr-x   1 abrt    abrt     10296 Oct 16  2014/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
263399    0 -rw-r--r--   1 user10  user10      0 Aug 28 01:06/usr/user10.txt

13、查找/etc/目录下至少有一类用户没有写权限的文件;

答:
[[email protected]~]# find /etc -not -perm -222

14、查找/etc目录下最近一周内其内容被修改过,且不属于roothadoop的文件;

答:
方法一:
[[email protected]~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) 
方法二:
[[email protected]~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop
时间: 2024-11-10 17:31:09

23 第五周作业的相关文章

软件项目管理第五周作业

1.psp Job Type Date Start End Total 四周总结 随笔 2016.4.4 23:00 23:23 23 站立会议 会议 2016.4.4 13:30 13:45 15 数据库 编码测试 2016.4.4 13:50 15:20 90 站立会议 会议 2016.4.5 13:00 13:15 15 摇一摇1 编码测试 2016.4.5 13:35 14:20 45 站立会议 会议 2016.4.6 13:05 13:15 10 数据库函数添加 编码测试 2016.4

《机电传动控制》第五周作业

机电传动控制第五周作业 一.传动电机或控制电机在工业或生活中的应用: 1.电气伺服传动领域 在要求速度控制和位置控制(伺服)的场合,特种电机的应用越来越广泛.开关磁阻电动机.永磁无刷直流电动机.步进电动机.永磁交流伺服电动机.永磁直流电动机等都已在数控机床.工业电气自动化.自动生产线.工业机器人以及各种军.民用装备等领域获得了广泛应用.如交流伺服电机驱动系统应用在凹版印刷机中,以其高控制精度实现了极高的同步协调性,使这种印刷设备具有自动化程度高.套准精度高.承印范围大.生产成本低.节约能源.维修

解题报告——2018级2016第二学期第五周作业排座椅

解题报告--2018级2016第二学期第五周作业 F:排座椅 描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来 之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设 置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅

解题报告—— 2018级2016第二学期第五周作业 删数问题

解题报告--  2018级2016第二学期第五周作业 删数问题 描述 键盘输入一个高精度的正整数n(<=240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小. 输入ns输出最后剩下的最小数样例输入 178543 4 样例输出 13 分析: 这题题目上已表明是贪心算法:原本最容易产生的错误贪心准则是删去其中最大的数字:但通过简单举例便可得之,这种贪心准则要漏洞:通过简单的计算举例发现如果这个数是一位比一位大的话

20179214 2017-2018-2 《密码与安全新技术》第五周作业

20179214 2017-2018-2 <密码与安全新技术>第五周作业 课程:<密码与安全新技术> 班级: 201792 姓名: 刘胜楠 学号:20179214 上课教师:谢四江 上课日期:2018年3月29日 必修/选修: 选修 学习内容总结 ICO众筹 所有成功的数字货币以及区块链(本文区块链指"区块链公有链")项目无一不是社区项目.常见的ICO里,数字货币和区块链项目向早期爱好者出售项目代币.项目团队通过ICO获取技术开发和市场拓展资金:而项目爱好者通过

软件过程与项目管理(第五周作业)

协作图(第五周项目所分配的任务) 一.协作图的作用 协作图是在一种给定语境中描述协作中各个对象间的组织交互关系的空间组织结构的图形化方式,从定义中可以分析它的作用为:对象间消息的传递来反映具体的使用语境的逻辑表达,一个使用情境的逻辑可能是一个用例的一部分或是一条控制流:它的交互关联显示对象交互的空间组织结构,显示一种对象间的关系,而不注重顺序:表现一个类的操作实现,协作图中可以说明类操作中使用的参数,变量,返回值.当表现一个系统的行为时,消息编号对应了程序中嵌套调用的结构和信号传递过程. 序列图

软件工程_东师站_第五周作业

1.psp Date Type Job Start Int(min) End Total(min) 20160404 助教 团队博客 14:00 16:20 25 14:25 18:00 100 站立会议 "耐撕"站立会议 15:10 15:40 30 编码 重构 18:00 5 18:30 25 编码 选择抢答者(JSP) 18:30 10 19:30 50 20160405 编码 选择抢答者(生成抢答者圈圈) 18:10 15 19:00 35 看书 计算机网络与因特网 22:00

第五周作业。

第五周时候解决的问题. 就拿自己做的那个APP项目来说吧.由于项目需求,清明前花了一个下午时间来实现一个下拉刷新的ListView.上网看了第三方的库,发现不是很适合自己用.于是自己尝试的去实现了个一个下拉刷新的ListVIew. 项目地址: https://github.com/wukunguang/GongGong 首先,大概描述下用户使用整个下拉刷新的过程. 触摸-> 按住 -> 向下拖动 -> 松开 那么程序内部实现的操作大概可分解为: 捕获触摸动作  -> 捕获向下拖动

软件过程与项目管理第五周作业

软件过程与项目管理第5周作业关于创新 创新是现在很热门的一个话题,国家鼓励支持创新创业,提倡人应该具有创新精神,创新促进时代社会进步.成功的创新可以带来巨大的改变,不仅是个人的成功,更有可能改变社会生产生活方式,这样的例子有很多,例如马云的阿里巴巴集团,旗下的支付宝就改变了我们的支付方式,用手机就能完成支付,这是一次伟大的创新,马云想到了别人想不到的事,看见未来发展趋势并牢牢的把握住了机遇.还有iphone的成功都离不开创新.   创新带来的成功和效益可见一斑.然而并不是有创新精神就能创新,有好