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

如题"()"前面应该是任意字符 "."表示任意字符,"*"表示前面字符任意长度

grep '.*()' /etc/rc.d/init.d/functionsLinux基本练习题_hello

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

取出基名使用grep -o '[[:alnum:]]*[^/]*[[:alnum:]]*$'

grep 中的option -o只显示匹配项(红色的为匹配项)

Linux基本练习题_单词_02

取出其扩展路径名使用   grep -o '.*/' | grep -o '.*[^/]'

先取出两"/"里面的内容  grep -o '.*/' 没有写成'/.*/'是因为正则表达式工作在贪婪模式

Linux基本练习题_hello_03

然后再进行一次匹配去掉最后一个"/" grep -o '.*[^/]'

Linux基本练习题_练习题_04

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

 先取出ifconfig 中所有的数字 ifconfig | grep -o '[[:digit:]]*'

 然后通过if与255进行过滤,把大于255的数字抛掉

 之后进行排序 sort

 排序是为了去除重复 uniq

  1 #!/bin/bash

  2 #script name extractnum 

  3 #Author Thanatos

  4 #

  5 function extractnum {

  6 for num in `ifconfig | grep -o '[[:digit:]]*'`;do

  7         if (( $num<=255 ));then

  8                 echo $num

  9         fi

 10 done

 11 }

 12 

 13 extractnum | sort | uniq

Linux基本练习题_练习题_05

Linux基本练习题_crontab_06

            

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

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

没有属主或属组的文件 find / -nouser -o(表示或) -nogroup

Linux基本练习题_练习题_07

Linux基本练习题_练习题_08


查找近3天内被访问过的文件,访问文件用-atime 把上面命令后面再加一个-a(表是and) -atime -3

Linux基本练习题_crontab_09

Linux基本练习题_单词_10

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

使用find /path -perm 。

Linux基本练习题_Linux_11

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

Linux基本练习题_hello_12

Linux基本练习题_hello_13

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

先复制   cp /etc/rc.d/rc.sysinit  /tmp/

修改空白字符开头行首加#    先用vim打开,然后输入%s/^[[:space:]]+/#&

%表示全文修改

&表示前面匹配的所有内容

Linux基本练习题_hello_14

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

Linux基本练习题_crontab_15

在末行输入%s/^#[[:space:]]*/ 

就可以得到题目要求的结果

Linux基本练习题_练习题_16

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

vim末行模式添加

%s/enable=0/enable=1/g

g表示有多少个替换几个

%s/gpgcheck=0/gpgcheck=1/g


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


即时自动运行脚本使用at命令,周期性自动运行脚本使用crontab命令。

crontab使用方法


Usage:

 crontab [options] file

 crontab [options]


Options:

 -u <user>    设定用户

 -e         编辑用户的crontab

 -l         显示用户的crontab计划任务

 -r         删除用户的crontab计划任务

 -i         提示删除crontab文件

Date=`date +%Y+%m+%d`

crontab -e -u username

0 8 * * 2,4,6 /usr/bin/tar -jcf /backup/messages_logs/message-$Date /var/log/messages

分 时 天 月 周  script

每个星期2,4,6执行后面的script

crontab 设置完之后再 /var/spool 下生成一个cron的文件

设置crontab的访问权限可以编辑/etc/cron.deny或者/etc/cron/allow


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

crontab -e -u username

*   0-24/2  *  *  *  /usr/bin/grep "^S" /proc/meminfo

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

#!/bin/bash


for username in user{10..19};do

     id $username &>/dev/null 

    [ $? -eq 0 ] && echo "$username is exist" && continue 

    useradd $username

     echo "$username" | passwd --stdin $username

done

echo "Successfull add"