1、显示当前系统上root、fedora或user1用户的默认shell;
egrep "^(root|fedora|user1)\>" /etc/passwd |cut -d: -f1,7
root|fedora|user1表示三者符合其一的选择条件
()使其归组
^表示以后面归组的条件开头
\>表示以空字符截断此前的条件字符,即后跟其它字符的单词将不匹配
2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
egrep -o "[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions
[:alpha:]单个字母字符(不区分大小写)
[_[:alpha:]]表示匹配字母字符和下划线
+ 表示匹配前面的条件一次或多次
()需要转义
-o表示只输出匹配的部分
3、使用echo命令输出一个绝对路径,使用grep取出其基名;
echo /etc/httpd/conf | egrep -o "[^/]+/?$"
[^/]:匹配非"/"字符
/?: 匹配0个或1个"/"
$:以前面的匹配条件结尾
扩展:取出其路径名
echo /etc/httpd/conf | egrep -o "/.*/"
.*:多个任意字符
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])\>"
匹配:个位数|十位数|100-199|200-249|250-255
5、挑战题:写一个模式,能匹配合理的IP地址;
"(\<([0,1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0,1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\>"
6、挑战题:写一个模式,能匹配出所有的邮件地址;
"^([[:alpha:]]|[0-9]|\_)*@([[:alpha:]]|[0-9])*.(com|cn|com\.cn)$"
匹配:以多个字母,数字,下划线开头 @ 多个字母,数字匹配字符 . 以com或cn或com.cn结尾的字符
7、查找/var目录下属主为root,且属组为mail的所有文件或目录;
find /var -user root -group mail
8、查找当前系统上没有属主或属组的文件;
find / -nouser -o -nogroup
进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
find / -nouser -a -nogroup -a -atime -3
-a: and
-atime -3: 3天之内访问过的文件
9、查找/etc目录下所有用户都有写权限的文件;
find /etc -perm -222
find -perm -mode: mode中的任一位都要匹配条件
10、查找/etc目录下大于1M,且类型为普通文件的所有文件;
find /etc -size +1M -type f
11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
find /etc/init.d -perm -113
所有用户都有执行权限为 -perm -111
其它用户有写权限,则在其o位+2, -perm -113
12、查找/usr目录下不属于root、bin或hadoop的文件;
find /usr -not \( -user root -o -user bin -o -user hadoop \)
13、查找/etc/目录下至少有一类用户没有写权限的文件;
find /etc ! -perm -222
perm -222 表示每一类用户都有写权限,对此取反,则是至少有一类用户没有写权限
14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;
find /etc mtime -7 -not \( -user root -o -user hadoop \)
\(-user root -o -user hadoop \): 属于user组或hadoop组的用户都匹配
-not: 对后面的取反,即 匹配不属于user组也不属于hadoop组的用户
吐槽一下,51cto的博客排版功能真渣