magedu basic 第三次作业

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

# 使用egrep扩展正则表达式
# [:alpha:] # 表示任意大小写字母
# + # 表示匹配前面字符至少一次
# 由于centos7中/etc/rc.d/init.d/functions不存在,故创建本地文件进行测试

[hzz@8eff5a75ccba ~]$ cat > functions << EOF
> hello()
> hi
> 123
> 456()
> EOF
[hzz@8eff5a75ccba ~]$ egrep -o '[[:alpha:]]+\(\)' functions
hello()
[hzz@8eff5a75ccba ~]$

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

# 使用grep基本正则表达式
# [^] # 匹配指定范围外的任意单个字符
# \+ # 匹配其前面的字符至少1次
# \? # 匹配其前面的字符0或1次
# 最后使用cut处理以/结尾的情况

[hzz@8eff5a75ccba ~]$ echo /123/abc/456/|grep -o '[^/]\+/\?$'|cut -d'/' -f1
456
[hzz@8eff5a75ccba ~]$

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

# 使用egrep扩展正则表达式
# [] # 匹配指定范围内的任意单个字符
# \ # 匹配整个单词或数字
# | # 左边或者右边,不是按字符,是按整个字段
# 最后用sort进行排序,便于分析

[hzz@8eff5a75ccba ~]$ ifconfig|egrep -o '(\<[1-9]\>|\<[1-9][1-9]\>|\<[1-2][0-5][0-5]\>)'|sort -n
1
1
2
2
4
5
11
16
17
42
42
64
73
255
255
255
[hzz@8eff5a75ccba ~]$

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

# 使用find相关参数
# -nouser 查找没有属主的文件;
# -nogroup 查找没有属组的文件;
# -atime [+|-]n 访问时间,单位:天;
# -n 时间区间为:0 <= time < n;

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

[hzz@huangzz6 ~]$ touch 123 456 789
[hzz@huangzz6 ~]$ sudo chown 123:456 789
[hzz@huangzz6 ~]$ sudo find / -nouser -nogroup -ls 2>/dev/null
4241474    0 -rw-rw-r--   1 123      456             0 Feb  9 11:04 /home/hzz/789
[hzz@huangzz6 ~]$

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

[hzz@huangzz6 ~]$ mkdir 110
[hzz@huangzz6 ~]$ sudo chown 123:456 110
[hzz@huangzz6 ~]$ sudo find / -nouser -nogroup -atime -3 -ls 2>/dev/null
4241474    0 -rw-rw-r--   1 123      456             0 Feb  9 11:04 /home/hzz/789
4241475    0 drwxrwxr-x   2 123      456             6 Feb  9 11:11 /home/hzz/110
[hzz@huangzz6 ~]$

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

# 使用find相关参数
# -size [+|-]nUNIT 常用单位(UNIT):k, M, G;
# +n 时间区间为:n+1 <= time < +∞;

# 由于/etc下没有大于1M的文件,从其他地方拷过去以便显示效果

[hzz@huangzz6 ~]$ sudo cp -a /lib64/libdb-4.7.so /etc/
[hzz@huangzz6 ~]$ sudo find /etc -type f -size +1M -ls
16795907 1492 -rwxr-xr-x   1 root     root      1525560 Jan 11 18:40 /etc/libdb-4.7.so
[hzz@huangzz6 ~]$

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

# 使用find相关参数
# -perm [/|-]MODE
# -MODE 每一类对象都必须同时拥有为其指定的权限标准;

[hzz@huangzz6 etc]$ sudo touch /etc/init.d/test
[hzz@huangzz6 etc]$ sudo touch /etc/init.d/test2
[hzz@huangzz6 etc]$ sudo chmod 753 /etc/init.d/test
[hzz@huangzz6 etc]$ sudo chmod 755 /etc/init.d/test2
[hzz@huangzz6 etc]$ sudo find /etc/init.d/ -perm -113 -ls
50334776    0 -rwxr-x-wx   1 root     root            0 Feb  9 11:55 /etc/init.d/test
[hzz@huangzz6 etc]$

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

# 使用find相关参数
# -a 与;
# -o 或;
# -not 非,也可以使用!;

[hzz@huangzz6 ~]$ sudo chown hzz:hzz /etc/libdb-4.7.so
[hzz@huangzz6 ~]$ echo 123 > /etc/libdb-4.7.so
[hzz@huangzz6 ~]$ sudo find /etc -mtime -6 ! -user root ! -user hadoop -ls
16795907    4 -rwxr-xr-x   1 hzz      hzz             4 Feb  9 11:40 /etc/libdb-4.7.so
[hzz@huangzz6 ~]$

8、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加*。

# 使用vim中的:s替换命令

cp -a /etc/rc.d/rc.sysinit /tmp/;
vim /tmp/rc.sysinit;

# 打开文件后执行以下命令

:%s/^\([[:space:]]\+.*\)/\*\1/g
:wq

9、删除/tmp/rc.sysinit文件中的以_开头,且后面跟了至少一个空白字符的行的_和空白字符。

# 使用vim中的:s替换命令

vim /tmp/rc.sysinit;

# 打开文件后执行以下命令

:%s/^\*[[:space:]]\+\(.*\)/\1/g
:wq

10、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1。

# 使用vim中的:s替换命令

vim /etc/yum.repos.d/CentOS-Media.repo;

# 打开文件后执行以下命令

:%s/\(\\|\\)=0/\1=1/g
:wq

11、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20161202。

0 0 * * 2,4,6 cp -a /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)

12、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中。

* */2 * * * grep '^S' /proc/meminfo >> stats/memory.txt

13、写一个脚本创建10用户user10-user19;密码同用户名。

#!/bin/bash

[[ "$(whoami)" != "root" ]] && echo -e "\nPlease exec by root! \n" && exit 1

for (( i=10 ; i<=19 ; i++ ))
do
    add_user=user${i}
    add_passwd=${add_user}

    if [[ $(id ${add_user} &> /dev/null) ]] 
    then
        echo -e "\n${add_user} exist! \n"
    else
        useradd ${add_user}
        echo "${add_passwd}"|passwd --stdin ${add_user}
    fi
done

exit

相关笔记:(不与作业周期同步)


Vim编辑器

《Vim编辑器简介》

Bash变量、配置及测试运算

Bash变量、配置及测试运算简介

Linux下的文件查找

Linux下的文件查找

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息