马哥教育网络班21期+第五周课程练习

马哥教育网络班21期+第5周课程练习

[TOC]

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

[root@rhel-5 ~]# grep -E '^[[:space:]]+' /boot/grub/grub.conf 
	root (hd0,0)
	kernel /vmlinuz-2.6.18-348.el5 ro root=LABEL=/ rhgb quiet
	initrd /initrd-2.6.18-348.el5.img
[root@rhel-5 ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf

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

[root@rhel-5 ~]# grep -E '^#[[:space:]]+[^[:space:]]+' /etc/rc.d/rc.sysinit

3. 打出netstat -tan命令执行结果中以LISTEN后跟空白字符结尾的行。

[root@rhel-5 ~]# netstat -tan | grep 'LISTEN[[:space:]]*'
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:3938                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:6000                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:1521                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:6010              0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:6011              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:734                 0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN

4. 添加用户bashtestbash,basher,nologin(此用户的shell为/sbin/nologin),而后找出当前系统上用户和默认shell相同的用户信息。

[root@rhel-5 tuser1]# useradd bash
[root@rhel-5 tuser1]# useradd testbash
[root@rhel-5 tuser1]# useradd basher
[root@rhel-5 tuser1]# useradd -s /sbin/nologin nologin
[root@rhel-5 tuser1]# grep -E  "(^[[:alpha:]]+):.*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:502:504::/home/bash:/bin/bash
nologin:x:505:507::/home/nologin:/sbin/nologin

5. 显示当前系统上rootfedorauser1用户的默认shell

[root@rhel-5 ~]# grep -E '^(root|fedora|user1)' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@rhel-5 ~]# grep -E '^(root|fedora|user1)' /etc/passwd | cut -d: -f7
/bin/bash

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

[root@rhel-5 ~]# grep "^\<[a-z]\+\>()" /etc/rc.d/init.d/functions
checkpid() {
daemon() {
killproc() {
pidfileofproc() {
pidofproc() {
status() {
success() {
failure() {
passed() {
warning() {
action() {
strstr() {
confirm() {
[root@rhel-5 ~]# grep -E '^\<[[:alpha:]]+\>\(\)' /etc/rc.d/init.d/functions

7. 使用echo命令输出一个绝对路径,使用grep取出其基名。

grep -oE "[^/]+/?$" | cut -d"/" -f 1

[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt/ | grep -oE "[^/]+/?$" | cut -d"/" -f 1
12.txt
[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt | grep -oE "[^/]+/?$" | cut -d"/" -f 1
12.txt

7.1 扩展:取出其路径名。

[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt | grep -oE ".*/"
/usr/appsoft/software/

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

[root@rhel-5 ~]# ifconfig | grep -wE '([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])'
[root@rhel-5 ~]# ifconfig | grep -wE '[1-9][0-9]?|1[0-9][0-9]|2[0-5][0-5]'

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

这里认为合理的IP为:[0-255].[0-255].[0-255].[0-255]
grep -wE '(([0-1]?[0-9]?[0-9]|2[0-5]{2})\.){3}([0-1]?[0-9]?[0-9]|2[0-5]{2})'

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

grep -E '[[:alnum:]]+.*@[[:alnum:]]+\.[[:alnum:]]+\.?[[:alpha:]]+'

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

[root@rhel-5 ~]# find /var -user root -group mail
/var/spool/mail
/var/spool/mqueue
[root@rhel-5 var]# find /var -user root -group mail -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue
[root@rhel-5 var]# find /var \( -user root -group mail \) -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue

11.1 关于find命令-ls参数的用法总结

find命令中使用了-a(逻辑与)或-o(逻辑或)时,如果还需要使用-ls参数,则需要注意:

-a: 使用逻辑与时,各条件是否使用()括起来均可,建议使用()括起来;

-O: 使用逻辑或时,各条件必须使用()括起来,否则查找结果显示错误。

-o:若不使用(),一般认为会显示最后一个逻辑条件的查找结果,但是实验发现,最后一个逻辑条件的查找结果显示也是错误的,所以逻辑或查找条件中,必须将各条件用()括起来。

示例:

-a: 可以省略不写

[root@rhel-5 var]# find /var -user oracle -group mail -ls
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle
[root@rhel-5 var]# find /var \( -user oracle -group mail \) -ls
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle

-o:该参数配合-ls使用时,注意以下两点:

  • 第一条命令中,各逻辑条件不用()括起来,一般认为其只会显示最后一个逻辑条件的结果,即 -group mail,但是/var/123.sh的属组为mail,结果却没有显示出来,所以显示最后一个逻辑条件的查找结果的说法也是错误的。

  • find命令使用逻辑或进行条件查找时,各条件必须使用()括起来。

[root@rhel-5 var]# find /var -user oracle -o -group mail -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
3413767    0 -rw-rw----   1 nologin  mail            0 7月 31 19:26 /var/spool/mail/nologin
3413764    0 -rw-rw----   1 bash     mail            0 7月 31 19:26 /var/spool/mail/bash
3390134    4 -rw-rw----   1 rpc      mail            0 7月 29 10:01 /var/spool/mail/rpc
3413766    0 -rw-rw----   1 basher   mail            0 7月 31 19:26 /var/spool/mail/basher
3413765    0 -rw-rw----   1 testbasher mail            0 7月 31 19:26 /var/spool/mail/testbasher
3413768    0 -rw-rw----   1 testbash mail            0 8月  1 13:44 /var/spool/mail/testbash
3413763    0 -rw-rw----   1 hadoop   mail            0 7月 31 19:04 /var/spool/mail/hadoop
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue
[root@rhel-5 var]# find /var \( -user oracle -o -group mail \) -ls
397605    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/sEXTPROC1521
397606    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/s#27699.2
397604    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/s#27699.1
 41919   16 -rw-------   1 oracle   oinstall    15000 7月 29 15:35 /var/cache/coolkey/coolkeypk11sE-Gate\ 0\ 0-500
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
3413767    0 -rw-rw----   1 nologin  mail            0 7月 31 19:26 /var/spool/mail/nologin
3413764    0 -rw-rw----   1 bash     mail            0 7月 31 19:26 /var/spool/mail/bash
3390134    4 -rw-rw----   1 rpc      mail            0 7月 29 10:01 /var/spool/mail/rpc
3413766    0 -rw-rw----   1 basher   mail            0 7月 31 19:26 /var/spool/mail/basher
3413765    0 -rw-rw----   1 testbasher mail            0 7月 31 19:26 /var/spool/mail/testbasher
3413768    0 -rw-rw----   1 testbash mail            0 8月  1 13:44 /var/spool/mail/testbash
3413763    0 -rw-rw----   1 hadoop   mail            0 7月 31 19:04 /var/spool/mail/hadoop
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue

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

[root@rhel-5 var]# useradd ies
[root@rhel-5 ies]# userdel ies
[root@rhel-5 ies]# find / \( -nouser -o -nogroup \) -ls
3413769    0 -rw-rw----   1 507      mail            0 8月  1 15:23 /var/spool/mail/ies
3348827    4 drwx------   4 507      509          4096 8月  1 15:24 /home/ies
2048441    4 -rw-r--r--   1 507      509           176 8月  1 15:23 /home/ies/.bash_profile
2048442    4 -rw-r--r--   1 507      509           515 8月  1 15:23 /home/ies/.emacs
3348828    4 drwxr-xr-x   3 507      509          4096 8月  1 15:23 /home/ies/.kde
3348829    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.kde/Autostart
2113337    4 -rw-r--r--   1 507      509           381 8月  1 15:23 /home/ies/.kde/Autostart/.directory
2048443    4 -rw-r--r--   1 507      509            33 8月  1 15:23 /home/ies/.bash_logout
2048444    4 -rw-r--r--   1 507      509           658 8月  1 15:23 /home/ies/.zshrc
2048446    0 -rw-r--r--   1 507      509             0 8月  1 15:24 /home/ies/ies.txt
3348830    4 drwxr-xr-x   4 507      509          4096 8月  1 15:23 /home/ies/.mozilla
3348831    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.mozilla/extensions
3348832    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.mozilla/plugins
2048445    4 -rw-r--r--   1 507      509           124 8月  1 15:23 /home/ies/.bashrc

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

[root@rhel-5 ies]# find / -nouser -o -nogroup -a -atime -3
[root@rhel-5 ies]# find / \( -nouser -o -nogroup -a -atime -3 \) -ls

find命令的逻辑条件查找中使用-ls参数,需要用()将各逻辑条件括起来。

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

[root@rhel-5 etc]# find /etc/ -perm -222

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

[root@rhel-6 rc.d]# find /etc/ -size +1M -type f
/etc/gconf/gconf.xml.defaults/%gconf-tree.xml
/etc/selinux/targeted/policy/policy.24
/etc/selinux/targeted/modules/active/policy.kern
[root@rhel-6 rc.d]# find /etc/ \( -size +1M -type f \) -ls
567266 1968 -rw-r--r--   1 root     root      2014902 8月  1 17:39 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
437789 7124 -rw-r--r--   1 root     root      7292701 8月  2 08:55 /etc/selinux/targeted/policy/policy.24
437514 7124 -rw-r--r--   1 root     root      7292701 8月  2 08:55 /etc/selinux/targeted/modules/active/policy.kern

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

[root@rhel-6 rc.d]# find /etc/init.d/ -perm 113

16. 查找/usr目录下不属于rootbinhadoop的文件。

[root@rhel-6 rc.d]# find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls
[root@rhel-6 rc.d]# find /usr ! -user root -a ! -user bin -a ! -user hadoop

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

[root@rhel-6 rc.d]# find /etc ! -perm -222 -ls

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

[root@rhel-6 rc.d]# find /etc -mtime -7 -a ! -user root -a ! -user hadoop

原创文章,作者:N21_未来人,如若转载,请注明出处:http://www.178linux.com/27320

(0)
N21_未来人N21_未来人
上一篇 2016-08-02
下一篇 2016-08-02

相关推荐

评论列表(1条)

  • Net21-冰冻vs西瓜
    Net21-冰冻vs西瓜 2016-08-03 10:36

    写的不错哈!