首页 > 代码库 > Linux第五周作业

Linux第五周作业


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_\.\-]+@([0-9a-zA-Z]+\.)+[a-zA-Z]{2,}

匹配的邮箱类似于28.dsa_weq-wqe@corpmail.china.com

域名至少有顶级域和次级域,可以更多。顶级域至少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

 

Linux第五周作业