难搞的grep、find练习题

马哥教育网络班21期-第五周博客作业

1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

[root@caicai ~]# grep --color "^[[:space:]]\+" /boot/grub/grub.conf
          root (hd0,0)
                   kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_caicai-lv_root rd_NO_LUKS rd_LVM_LV=vg_caicai/lv_root LANG=en_US.UTF-8 rd_LVM_LV=vg_caicai/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
                            initrd /initramfs-2.6.32-504.el6.x86_64.img

2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

[root@caicai ~]# grep "^\#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit
  # /etc/rc.d/rc.sysinit - run once at boot time # Taken in part from Miquel van Smoorenburg's bcheckrc. 
  # Check SELinux status 
  # Print a text banner. 
  # Only read this once. 
  # Initialize hardware 
  . 
  . 
  . 并未粘贴给出所有匹配到的行。

3、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;

[root@caicai ~]# netstat -tan | grep "LISTEN[[:space:]]\+" 
tcp        0      0 0.0.0.0:52627              0.0.0.0:*                   LISTEN       
tcp        0      0 0.0.0.0:22                    0.0.0.0:*                   LISTEN       
tcp        0      0 127.0.0.1:631              0.0.0.0:*                   LISTEN       
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN       
tcp        0      0 0.0.0.0:111                  0.0.0.0:*                   LISTEN       
tcp        0      0 :::22                                 :::*                        LISTEN       
tcp        0      0 ::1:631                             :::*                        LISTEN       
tcp        0      0 ::1:25                               :::*                        LISTEN       
tcp        0      0 :::38556                           :::*                        LISTEN       tcp        0      0 :::111                               :::*                        LISTEN

4、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

这题我使用bash脚本 
#!/bin/bash 
id bash &> /dev/mull || useradd bash 
id testbash &> /dev/null || useradd testbash 
id basher &> /dev/null || useradd basher 
id nologin &> /dev/null || useradd -s /sbin/nologin nologin 
grep --color "^\(\b[[:alnum:]]\+\b\).*\1$" /etc/passwd 
#grep --color -E "^(\b[[:alnum:]]+\b).*\1$" /etc/passwd

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

[root@caicai ~]# grep -E --color "^(root|fedora|user1)" /etc/passwd | cut -d: -f7 /bin/bash /bin/bash

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

[root@caicai ~]# grep -E --color "\b.*[[:alpha:]].*\b\(\)" /etc/rc.d/init.d/functions  
fstab_decode_str() { 
checkpid() { 
__readlink() { 
__fgrep() { 
__umount_loop() { 
__umount_loopback_loop() { 
__pids_var_run() { 
. 
. 
. 
并未粘贴给出所有匹配到的行。

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

[root@caicai ~]# echo "/etc/qwe/asd/zxc" | grep -o "\b\/[[:alnum:]]\+\b$" 
/zxc 

[root@caicai ~]# echo "/etc/qwe/asd/zxc" | grep -o --color "\/.*\/" 
/etc/qwe/asd/

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

[root@caicai ~]# ifconfig | grep -E --color "\b[0-9]{1,2}\b|\b1[0-9]{1,2}\b|2[0-4][0-9]?\b|\b25[0-5]?\b"

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

[root@caicai ~]# ifconfig | grep -E --color "((\b[0-9]{1,2}\b|\b1[0-9]{1,2}\b|2[0-4][0-9]?|\b25[0-5]?)\b\.){3}(\b[0-9]{1,2}\b|\b1[0-9]{1,2}\b|2[0-4][0-9]?|\b25[0-5]?\b)"
           inet addr:192.168.183.128  Bcast:192.168.183.255  Mask:255.255.255.0           
           inet addr:127.0.0.1  Mask:255.0.0.0

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

[root@caicai ~]# cat mail  
123@163.com 
asdaf@qq.com 
j4l3jlqF@outlook.com 
jijibab 
1234 
asd_123@yahoo.com  lkskdj@yahoo.com 


[root@caicai ~]# grep --color ".*@.*\.com" ./mail     
123@163.com 
asdaf@qq.com 
j4l3jlqF@outlook.com 
asd_123@yahoo.com  lkskdj@yahoo.com

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

[root@caicai ~]# find /var -user root -a -group mail -ls  
525464    4 drwxrwxr-x   2 root     mail         4096 Jul 14 19:40 /var/spool/mail

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

[root@caicai ~]# find / -nouser -a -nogroup

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

[root@caicai ~]# find / -nouser -a -nogroup -a -atime -3

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

[root@caicai ~]# find /etc -perm -111

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

[root@caicai ~]# find /etc -size +1M -a -type f -exec ls -lh {} \; 
-rw-r--r--. 1 root root 7.8M Jun 24 18:52 /etc/selinux/targeted/policy/policy.24 
-rw-r--r--. 1 root root 7.8M Jun 24 18:52 /etc/selinux/targeted/modules/active/policy.kern 
-rw-r--r--. 1 root root 2.2M Jun 24 18:56 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

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

[root@caicai ~]# find /etc/init.d/ -perm -113

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

[root@caicai ~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop -ls 
795159   12 -rwsr-xr-x   1 abrt     abrt        10296 Oct 16  2014 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache

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

[root@caicai ~]# find /etc -not -perm -222

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

[root@caicai ~]# find /etc -mtime -7 -a -not -user root -o -not -user hadoop

原创文章,作者:N21_志建,如若转载,请注明出处:http://www.178linux.com/25551

(0)
N21_志建N21_志建
上一篇 2016-07-26
下一篇 2016-07-26

相关推荐

  • MySQL流程函数

    MySQL流程函数 IF(value,x y) 如果value是真,返回x,否则返回y MariaDB [learn]> INSERT INTO salary(sal) VALUES (1000),(2000),(3000),(4000),(5000),(6000),(NULL); Query OK, 7 rows affected (0.06 sec…

    Linux干货 2017-05-02
  • 搭建discuz服务器

      Discuz是目前比较流行的社区论坛系统,其具有安装简便、功能强大的特点,下面以LAMP为基础平台来搭建discuz服务器。   一、安装apache服务   二、安装php   三、安装mysql   四、安装php-mysql   五、启动mysql服务   六、创建数据库 &nb…

    Linux干货 2016-03-18
  • 第一周-Linux Basic

        本文主要介绍了计算机的组成及功能、Linux的发行版、Linux哲学思想、一些基本命令、命令帮助的获取、文件系统层级结构标准。 一、计算机的组成及功能     计算机由硬件和软件两大类组成     硬件   &n…

    Linux干货 2016-11-28
  • linux 3.26 第一课

    setup app

    2018-03-26
  • 文件管理和用户组权限管理小结

    文件管理 文件系统结构 /boot: 引导文件存放目录,内核文件,引导加载器都存放在此目录 /bin:供所有用户使用的基本命令,不能关联至独立分区,os启动即会用到的程序 /sbin:管理类的基本命令:不能关联至独立分区,os启动即会用到的程序 /etc:配置文件目录 /home:普通用户家目录 /root:管理员的家目录 /dev: 设备文件及特殊文件存储…

    2017-07-23
  • awk的进阶

    前言 awk的中有很多的控制语句,awk也支持if语句,while语句,for语句等等编程逻辑充的控制语句及数组、函数。 awk的进阶无非就是多练。 1.控制语句 (1)if-else语句 语句格式: if(condition) {statments}    if  (条件) 条件为真 执行{statments} 只有一个语句可…

    Linux干货 2016-06-26

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-17 15:13

    写的很好,排版也很棒,加油