1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
如题"()"前面应该是任意字符 "."表示任意字符,"*"表示前面字符任意长度
grep '.*()' /etc/rc.d/init.d/functions
2、使用echo命令输出一个绝对路径,使用grep取出其基名; 扩展:取出其路径名
取出基名使用grep -o '[[:alnum:]]*[^/]*[[:alnum:]]*$'
grep 中的option -o只显示匹配项(红色的为匹配项)
取出其扩展路径名使用 grep -o '.*/' | grep -o '.*[^/]'
先取出两"/"里面的内容 grep -o '.*/' 没有写成'/.*/'是因为正则表达式工作在贪婪模式
然后再进行一次匹配去掉最后一个"/" grep -o '.*[^/]'
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
4、查找当前系统上没有属主或属组的文件;
进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
没有属主或属组的文件 find / -nouser -o(表示或) -nogroup
查找近3天内被访问过的文件,访问文件用-atime 把上面命令后面再加一个-a(表是and) -atime -3
6、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
使用find /path -perm 。
7、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;
8、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
先复制 cp /etc/rc.d/rc.sysinit /tmp/
修改空白字符开头行首加# 先用vim打开,然后输入%s/^[[:space:]]+/#&
%表示全文修改
&表示前面匹配的所有内容
9、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
在末行输入%s/^#[[:space:]]*/
就可以得到题目要求的结果
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"