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

    cat /etc/passwd | cut -d: -f1,7 | grep -e "root" -e "fedora" -e "user1"
    root:/bin/bash
    user1:/bin/bash
    fedora:/bin/nologin

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

       cat /etc/rc.d/init.d/functions | grep -E -o "[[:alpha:]]\+\(\)"
        
       cat /etc/rc.d/init.d/functions | egrep -o "[[:alpha:]]+\(\)"
        
            -o:只显示匹配到的内容;


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

    扩展:取出其路径名

   grep方式:
      echo '/etc/rc.d/init.d/functions' | grep -o "[^/]\+/\?"
      echo '/etc/rc.d/init.d/functions' | grep -o "^.*/"
   egrep方式:
      echo '/etc/rc.d/init.d/functions' | egrep -o '[^/]+\?'
      echo '/etc/rc.d/init.d/functions' | egrep -o ".*/"
        
        注:\?匹配0次或1次,可有可无;

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

     ifconfig | grep -E "\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9]{2}\>|\<[2][0-5]{2}\>"
     
     每个数的词首词尾必须锚定\< \>

5、挑战题:写一个模式,能匹配合理的IP地址(痛彻心扉);

echo -e "192.168.1.3\a.b.c.d\192.168.3.26\192.68.3.2a" | egrep --color=auto -o  "(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9]{2}\>|\<[2][0-5]{2}\>)\.([1-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-5]{2})\.([1-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-5]{2})\.(\<[1-9]\>|\<[1-9][0-9]\>|\<[1][0-9]{2}\>|\<[2][0-5]{2}\>)"

  wKioL1fL_yyTBzS8AABgN_zxovE277.png-wh_50

头尾锚定中间两组数字没有进行锚定,


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


echo "w32_a+@163.com\s_aaa3A@a.Bss\1333@qq.com" | egrep -o "[[:alnum:]](([-._]?[[:alnum:]]+)*)@[[:alnum:]](([-._]?[[:alnum:]]+)*)\.([[:alnum:]]{2,})"

    wKiom1fMARPQmCZLAAAkA_YBneA374.png-wh_50


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

       find /var -user root -group mail -ls
        -user: 属主;    
        -group:属组;
        -ls:查看查找到文件和目录的属性信息-ls:查看查找到的文件和目录的属性信息


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

没有属主或属组的文件:

    find / -type f \( -nouser -o -nogroup \) -ls

且最近3天内曾被访问过的文件或目录:

    find / \( -nouser -o -nogroup \) -atime -3 -ls

-3:三天以内;

+3:三天以前;

3:3天但不超过4天.

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

    find /etc -perm -222

-222:每一类对象都必须同时拥有为其指定的权限标准;

+222:任何一类对象的权限中,只要能有一位匹配即可;

222:精确权限匹配;


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

    find /etc -size +1M -type f -exec ls -lh {} \;

+1M指大于1M;

1M:小于等于1M大于0M;

-1M:小于等于0M


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

    find /etc/init.d/ -perm +111 -perm -002 -ls


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

    find /usr -not (-user root -o -user bin -o -user hadoop) -ls    
    find /usr -not -user root  -not -user bin -not -user hadoop -ls

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

    find /etc -not -perm -222 -ls

-222:每一类对象都必须同时拥有为写权限;-not,不是 每一类对象都必须拥有写权限;


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

    find /etc -mtime -7 -not ( -user root -o -user hadoop ) -ls
    find /etc -mtime -7 -not -user root -not -user hadoop -ls