1、显示当前系统上root、fedora或user1用户的默认shell;
注释:egrep '^(root|fedora|usr1)\>' /etc/passwd 从/etc/passwd中查找root,fedora,user1用户,存在就匹配,不存在就跳过;
cut -d: -f1,7 截取第一和第七字段
2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
注释:参考的cix123 同学的博文,觉得很详细,所以也记下来:
^[_[:alpha:]]+ _ :表示以_或大小写字母开头,
+ :表示前面字符可以出现一次或多次,
\(\):其实可以拆为\( 和 \),使用的 \转义符;
3、使用echo命令输出一个绝对路径,使用grep取出其基名;
注释:如果 echo"/tmp/log" 后面没有 "/",则使用 grep -E -o "[^/]+$"
如果 echo"/tmp/log/" 后面有 "/",则使用 grep -E -o "[^/]+/?$" , /? 表示可以出现1次或不出现
扩展:取出其路径名
4、找出ifconfig命令结果中的1-255之间数字;
5、挑战题:写一个模式,能匹配合理的IP地址;
6、挑战题:写一个模式,能匹配出所有的邮件地址;
7、查找/var目录下属主为root,且属组为mail的所有文件或目录;
注释:目前在用的系统里没有符合匹配的,于是换了个属组gdm, 但是效果是一样的,这点可以灵活处理
8、查找当前系统上没有属主或属组的文件;
进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
注释:-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。
9、查找/etc目录下所有用户都有写权限的文件;
10、查找/etc目录下大于1M,且类型为普通文件的所有文件;
注释:-size +文件大小 -type 文件类型
11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
12、查找/usr目录下不属于root、bin或hadoop的文件;
注释:Hadoop 用户没有,业务系统,就不乱动它了;另外后面加个more是因为匹配的文件太多翻了,懒得翻页;
更简单的方式:find /usr -not \( -user root -o -user bin -o -user hadoop \)
这里有个坑我提示下: "\(" 与 "-user" 之间须用 空格 隔开,不然就会报下面的错,当时我也没明白,郁闷了很久才发现。
13、查找/etc/目录下至少有一类用户没有写权限的文件;
14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;
注释:find /etc/ -mtime -7 是查找最近一周内修改过的文件;-not -user root -not -user -hadoop 是查找不属于root或hadoop 的文件
关于 -a 和 -o 参数的小说明:-a:and, 如果条件1为假则条件2不执行; -o: or,如果条件1位真则条件2不执行。