1、显示当前系统上root、fedora或user1用户的默认shell;

[root@client ~]# cut -d: -f1,7 /etc/passwd | grep -E "^root|fedora|user1"
root:/bin/bash
user1:/bin/bash
fedora:/bin/bash

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

[root@client ~]# grep -Eo "\<[[:alpha:]]*\>\(\){1}" /etc/rc.d/init.d/functions
checkpid()
daemon()
killproc()
pidfileofproc()
pidofproc()
status()
success()
failure()
passed()
warning()
action()
strstr()
confirm()

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

  扩展:取出其路径名

[root@client ~]# echo "/etc/sysconfig/network/" | grep -Eo "[^/]+/?$" | cut -d"/" -f1
network
[root@client ~]# echo "/etc/sysconfig/network/" | grep -Eo ".*/\<" | grep -Eo ".*[^/]\>"
/etc/sysconfig
[root@client ~]# basename /etc/sysconfig/network/ #basename为用于查询基名的变量
network
[root@client ~]# dirname /etc/sysconfig/network/ #dirname为用于查询目录名的变量
/etc/sysconfig

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

[root@client ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C6:4F:C7  
          inet addr:192.168.137.3  Bcast:192.168.137.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec6:4fc7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:80200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29442 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6254115 (5.9 MiB)  TX bytes:7232687 (6.8 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:4940 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4940 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:393440 (384.2 KiB)  TX bytes:393440 (384.2 KiB)

[root@client ~]# ifconfig | grep -Eo "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\>" 
29
192
168
137
3
192
168
137
255
255
255
255
64
1
5
9
6
9
127
1
255
1
128
1
2
2

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

[root@client ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C6:4F:C7  
          inet addr:192.168.137.3  Bcast:192.168.137.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec6:4fc7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:84187 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32193 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6636499 (6.3 MiB)  TX bytes:7613847 (7.2 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:5020 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5020 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:399752 (390.3 KiB)  TX bytes:399752 (390.3 KiB)

[root@client ~]# ifconfig | grep -Eo "(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\>"
192.168.137.3
192.168.137.255
255.255.255.0
127.0.0.1
255.0.0.0

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

[root@client ~]# grep -E "(^([[:alnum:]]))([[:alnum:]]|[_]|[-])*@([[:alnum:]]|[-]|[_])+\.[[:alpha:]]{2,}" mailaddress.txt #目前域名后缀最少应该有2位,比如cn、la等
516xt546@qq.com 
jx@lc-jxgg.com
yangqing_0221@126.com
cs-nina@hot_mai.com
cf@cfcoppe-r.com

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

[root@client ~]# find /var/ \( -user root -a -group mail \) -a \( -type f -o -type d \)
/var/spool/mail

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

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

[root@client proc]# #当前系统上没有属主或属组的文件
[root@client proc]# find / /proc/ -prune -nogroup -nouser
[root@client proc]# #当前系统中不含无属主或属组的文件,使用/proc/ -prune的原因是因为/proc是一个伪文件系统,只存在于内存中
[root@client proc]# find / /proc/ -prune  \( -nouser -o -nogroup \) -a \( -type f -o -type d \) -a -atime -3
[root@client proc]# #同上

eg:
[root@client proc]# find / -path "/proc" -prune  \( -nouser -o -nogroup \) -a \( -type f -o -type d \) -a -atime 3
[root@client proc]# find / /proc/ -prune -nogroup -nouser
[root@client proc]# find / -path "/proc" -prune -nogroup -nouser

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

[root@client proc]# find /etc/ -perm -222 #文件过多 截取部分
/etc/udev/rules.d/80-net-name-slot.rules
/etc/udev/rules.d/75-persistent-net-generator.rules
/etc/udev/rules.d/70-persistent-net.rules
/etc/rc1.d
/etc/sysctl.d/99-sysctl.conf
/etc/pam.d/postlogin
/etc/pam.d/fingerprint-auth
/etc/pam.d/smtp
/etc/pam.d/smartcard-auth
/etc/pam.d/system-auth
/etc/pam.d/password-auth
/etc/redhat-release

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

[root@client proc]# 
[root@client proc]# find /etc/ -size +1M -type f
/etc/udev/hwdb.bin
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.29
/etc/betabeta/etc/udev/hwdb.bin
/etc/betabeta/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/betabeta/etc/selinux/targeted/policy/policy.29
/etc/yum.repos.d/man-pages-zh-CN-1.5.2-4.el7.noarch.rpm

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

[root@client ~]# find /etc/init.d/ -perm -111 -a -perm -002

12、查找/usr目录下不属于root、bin或hadoop的文件;

[root@client ~]# find /usr/ -not \( -user root -o -user bin -o -user hadoop \)
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache

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

[root@client ~]# find /etc/ -not -perm -222 #文件过多 截取部分
/etc/selinux/targeted/modules/active/modules/openvswitch.pp
/etc/selinux/targeted/modules/active/modules/kdump.pp
/etc/selinux/targeted/modules/active/modules/l2tpd.pp
/etc/selinux/targeted/modules/active/modules/mysql.pp
/etc/selinux/targeted/modules/active/modules/sensord.pp
/etc/selinux/targeted/modules/active/modules/xen.pp
/etc/selinux/targeted/modules/active/modules/canna.pp
/etc/selinux/targeted/modules/active/modules/dcc.pp
/etc/selinux/targeted/modules/active/modules/rhnsd.pp
/etc/selinux/targeted/modules/active/modules/drbd.pp
/etc/selinux/targeted/modules/active/modules/privoxy.pp

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

[root@client ~]# find /etc/ -mtime -7 -not \( -user root -o -user hadoop \)