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

linux  基础知识学习(五)_Linux

注释:egrep '^(root|fedora|usr1)\>' /etc/passwd 从/etc/passwd中查找root,fedora,user1用户,存在就匹配,不存在就跳过;

cut -d: -f1,7    截取第一和第七字段

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

linux  基础知识学习(五)_知识_02

注释:参考的cix123 同学的博文,觉得很详细,所以也记下来:

^[_[:alpha:]]+  _ :表示以_或大小写字母开头,

         + :表示前面字符可以出现一次或多次,

        \(\):其实可以拆为\(  和 \),使用的 \转义符;

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

linux  基础知识学习(五)_基础_03

注释:如果 echo"/tmp/log" 后面没有 "/",则使用 grep -E -o "[^/]+$"

   如果 echo"/tmp/log/" 后面有 "/",则使用 grep -E -o "[^/]+/?$" , /? 表示可以出现1次或不出现

扩展:取出其路径名

linux  基础知识学习(五)_知识_04

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

linux  基础知识学习(五)_知识_05


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

linux  基础知识学习(五)_知识_06

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

linux  基础知识学习(五)_知识_07

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

linux  基础知识学习(五)_Linux_08

注释:目前在用的系统里没有符合匹配的,于是换了个属组gdm, 但是效果是一样的,这点可以灵活处理

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

linux  基础知识学习(五)_知识_09

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

linux  基础知识学习(五)_基础_10

注释:-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。

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

linux  基础知识学习(五)_Linux_11

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

linux  基础知识学习(五)_基础_12

注释:-size +文件大小  -type 文件类型

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

linux  基础知识学习(五)_Linux_13

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

linux  基础知识学习(五)_知识_14

注释:Hadoop 用户没有,业务系统,就不乱动它了;另外后面加个more是因为匹配的文件太多翻了,懒得翻页;

更简单的方式:find /usr  -not \(  -user root -o -user bin -o -user hadoop  \)

这里有个坑我提示下: "\("  与 "-user" 之间须用 空格 隔开,不然就会报下面的错,当时我也没明白,郁闷了很久才发现。linux  基础知识学习(五)_知识_15

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

linux  基础知识学习(五)_Linux_16

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

linux  基础知识学习(五)_基础_17

注释:find /etc/ -mtime -7 是查找最近一周内修改过的文件;-not -user root -not -user -hadoop 是查找不属于root或hadoop 的文件

关于 -a 和 -o 参数的小说明:-a:and, 如果条件1为假则条件2不执行;  -o: or,如果条件1位真则条件2不执行。


linux  基础知识学习(五)_知识_18