首页 > 代码库 > 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第五次作业