难搞的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

相关推荐

  • 终端的类型

    Linux下的终端是一个连接系统的接口,它有以下几个分类     tty:虚拟终端       tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的。   &nbsp…

    Linux干货 2016-10-20
  • vsftpd、nfs、samba

    I/O:网络、存储 存储: DAS:Direct Attached Storage 接口类型:“block”;只有块设备才能够进行分区格式化 设备:SATA,SAS;IDE,SCSI;USB; NAS:Network Attached Storage(网络附加存储) 接口类型:”file” 协议:CIFS(samba), NFS(Ne…

    Linux干货 2017-06-13
  • 邮件原理你真的造吗

    一、前言     虽然现在QQ、微信等即时聊天工具原来越盛行,但是在企业与企业之间大部分还是会使用邮件系统进行信息交换。所以作为运维人员,更需要了解这个技术的原理。下面会慢慢介绍邮件的组件功能,将其组成部分。以及邮件的工作原理。     小贴士:邮件系统是一个比较复杂的系统,过程…

    Linux干货 2015-08-17
  • kickstart安装系统

    很多时候要安装很多机器是很繁琐,我们可以利用kickstart网络启动更加方便的去安装系统。 首先准备环境,安装相关程序。 [root@localhost ~]# yum -y install sytem-config-kickstart [root@localhost ~]# yum&n…

    Linux干货 2016-09-19
  • Linux作业管理和并发执行

    概述 本章将为大家介绍一些进程管理的补充部分作业管理和任务的并发执行,同时也将介绍一下Linux系统上计划任务的相关内容,具体分为:1、Linux作业管理2、任务的并发执行 第一章 Linxu作业管理 1、前台作业和后台作业    前台作业:通过中断启动,且启动后一直占据终端    后台作业:可通过终端启动,但启动后即…

    Linux干货 2016-09-28
  • 网络管理之多网卡bond,mode1

    一.概述 Bonding     就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 Bonding的工作模式     Mode…

    Linux干货 2016-09-15

评论列表(1条)

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

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