1、显示当前系统上root、fedora或user1用户的默认shell;
egrep "^(root|user1|fedora)" /etc/passwd|cut -d: -f7
2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
egrep "^[[:alpha:]]+\(\)" /etc/rc.d/init.d/functions
# 小括号必须转义,因为()在egrep中有特殊含义。
3、使用echo命令输出一个绝对路径,使用grep取出其基名;
echo "`which fdisk`"|egrep -o "[[:alpha:]]+$"
扩展:取出其路径名
echo "`which useradd`"|egrep -o "/.*/\b"
4、找出ifconfig命令结果中的1-255之间数字;
ifconfig|egrep "\<[1-9]\>|\<[1-9][0-9]\>|\<1[0-9][0-9]\>|\<2[0-4][0-9]\>|\<25[0-5]\>"
5、挑战题:写一个模式,能匹配合理的IP地址;
ifconfig|egrep "((\<[1-9]\>|\<[1-9][0-9]\>|\<1[0-9][0-9]\>|\<2[0-4][0-9]\>|\<25[0-5]\>)\.){3}(\<[1-9]\>|\<[1-9][0-9]\>|\<1[0-9][0-9]\>|\<2[0-4][0-9]\>|\<25[0-4]\>)"
红色为匹配前ip地址的前三段,蓝色为ip地址的最后一段,排除255
6、挑战题:写一个模式,能匹配出所有的邮件地址;
以QQ邮箱为例,正确的邮箱匹配pattern为
[0-9a-zA-Z_\.\-][email protected]([0-9a-zA-Z]+\.)+[a-zA-Z]{2,}
匹配的邮箱类似于[email protected]
域名至少有顶级域和次级域,可以更多。顶级域至少2位字母,不可为数字或其他字符
7、查找/var目录下属主为root,且属组为mail的所有文件或目录;
find /var -user root -group mail
8、查找当前系统上没有属主或属组的文件;
find / \( -nouser -o -nogroup \) -ls #括号不能省略,不然结果不正确
进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
find / -atime -3 \( -nouser -o -nogroup \) -ls
9、查找/etc目录下所有用户都有写权限的文件;
find /etc -perm -222 -ls
#########################################
-permmode:文件许可正好符合mode 精确匹配
-perm+mode:文件许可部分符合mode ugo任意一项包含mode
-perm-mode: 文件许可完全符合mode ugo所有的项都包含mode
##########################################
10、查找/etc目录下大于1M,且类型为普通文件的所有文件;
find /etc -type f -size +1M -ls
-size [+-]NUM[k,M,G]
不带+-, 数值区间 (NUM-1,NUM]
+ 数值区间 (NUM,无穷大)
- 数值区间 [0,NUM-1]
11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
find /etc/init.d/ -type f -perm -113
12、查找/usr目录下不属于root、bin或hadoop的文件;
find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls
13、查找/etc/目录下至少有一类用户没有写权限的文件;
方法1: find /tmp/ \( ! -perm +200 -o ! -perm +020 -o ! -perm +002 \) -ls
方法2: find /tmp/ ! -perm -222 -ls
14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;
find /etc \( -mtime -7 ! -user root -a ! -user hadoop \) -ls