首页 > 代码库 > Linux第五次作业
Linux第五次作业
1、显示当前系统上root、fedora或user1用户的默认shell;
grep -E "^(root|user1|fedora)" /etc/passwd | cut -d: -f7
2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
[root@localhost ~]# grep -E -o "[[:alpha:]]+\(\)" /etc/rc.d/init.d/functions checkpid() run() pidof() daemon() killproc() pidfileofproc() pidofproc() status() success() failure() passed() warning() stage() success() failure() passed() warning() action() strstr() file() true() false() sysctl()
3、使用echo命令输出一个绝对路径,使用grep取出其基名;
扩展:取出其路径名
[root@localhost ~]# echo "/home/1.txt" | grep -Eo "[^/]+/?$" 1.txt [root@localhost ~]# echo "/etc/rc.d/init.d/functions" | grep -Eo "^[/][a-z0-9]+.*/" /etc/rc.d/init.d/
4、找出ifconfig命令结果中的1-255之间数字; 1-9,10-19,100-199,200-249,250-255
[root@localhost ~]# ifconfig | egrep -o "\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>" 192 168 105 255 255 255 192 168 255 64 29 60 99 248 7 186 3 73 127 1 255 1 128 24 2 24 2 192 168 122 1 255 255 255 192 168 122 255
5、挑战题:写一个模式,能匹配合理的IP地址;
1.0.0.0-255.255.255.255
[root@localhost ~]# cat ip.txt | egrep "(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>)\.(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>\.)\.(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>)\.(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9][0-9]\>|\<[2][0-4][0-9]\>|\<[2][0-5][0-5]\>)" 1.1.1.1 2.2.2.2 3.3.3.3
6、挑战题:写一个模式,能匹配出所有的邮件地址;
[root@localhost ~]# cat email.txt | grep -E "^[a-z0-9_-]+@[a-z0-9_-]+.[[:alpha:]]+$" 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com 22222@qq.com 121dsfaf-adsfa@163.com 1@1.com
7、查找/var目录下属主为root,且属组为mail的所有文件或目录;
find命令:实时查找工具,通过遍历自定路径下的文件系统完成文件查找
工作特点:
查找速度略慢
精确查找
实时查找
格式:
find [OPTIONS]... [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径,可以为多个路径,默认为当前路径
查找条件:指定的查找标准,可以为文件名、大小、类型、权限等标准进行,默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做什么操作,默认输出至屏幕
查找条件:根据文件名查找
-name "filename":支持使用glob,严格区分文件名称大小写
-iname "filename":不区分字母大小写
-regex "PATTERN":支持使用正则表达式,以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
根据属主、属组查找文件
-user USRNAME:查找属主USERANME的文件
-group GRPNAME:查找属组为GRPNAME的文件
-uid UserID:查找属主为指定UID号的文件
-gid groupid:查找属组为指定gid号的文件
-nouser username :查找属主不是usernmae的文件
-nogroup groupname:查找属组不是groupname的文件
[root@localhost tmp]# chown root:mail fstab [root@localhost tmp]# ll ./fstab -rw-r--r--. 1 root mail [root@localhost tmp]# find /tmp/ -user root -group mail -ls 203539008 4 -rw-r--r-- 1 root mail 465 Sep 4 08:36 /tmp/fstab 465 Sep 4 08:36 ./fstab
8、查找当前系统上没有属主或属组的文件;
进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
根据时间戳:
以“天”为单位
-atime [+|-]#:最近一次访问时间
#:[#,#+1)
+#:[#+1,oo]
-#:[0,#]
-mtime [+|-]#:最近一次内容修改时间
#:[#,#+1)
+#:[#+1,oo]
-#:[0,#]
-ctime [+|-]#:最近一次属性修改时间
#:[#,#+1)
+#:[#+1,oo]
-#:[0,#]
以“分钟”为单位
-amin
-mmin
-cmin
[root@localhost /]# find /tmp \(-nouser -o -nogroup\) -ls //不加括号会把-o后面全部当做条件 [root@localhost /]# find /tmp atime 3 \(-nouser -o -nogroup\) -ls //+3三天前做过修改的,-3三天之内做过修改
9、查找/etc目录下所有用户都有写权限的文件;
[root@localhost /]#find /etc -perm -222 -ls
10、查找/etc目录下大于1M,且类型为普通文件的所有文件;
根据文件大小来查找:
-size [+|-]#UNIT
常用单位:k,M,G
#UNIT:(#-1,#]
-#UNIT:[0,#-1]
+#UNIT:(#,oo)
[root@localhost /]#find /etc -type f -size +1M -ls
11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
根据权限查找
-perm [+|-]MODE
MODE:精确权限匹配
+MODE:任何一类(u,g,o)对象的权限中只要能以为匹配即可
-MODE:每一类对象都必须同时拥有为其指定的权限标准
[root@localhost /]# find /etc/init.d/ -perm -113 -ls 68320523 8 -rwx-wxrwx 1 root root 6630 Sep 16 2015 /etc/init.d/network
12、查找/usr目录下不属于root、bin或hadoop的文件;
[root@localhost /]#find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls
13、查找/etc/目录下至少有一类用户没有写权限的文件;
[root@localhost /]# find /tmp/ \( ! -perm +200 -o ! -perm +020 -o ! -perm +002 \) -ls
14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;
[root@localhost /]#find /etc \( -mtime -7 ! -user root -a ! -user hadoop \) -ls
Linux第五次作业