1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
只有centos 6才有这文件
# cp /etc/rc.d/rc.sysinit /tmp/ # vim /tmp/rc.sysinit
输入:(进入末行模式)
:%s/^[[:space:]]/#&/
s/要查找的内容/替换为的内容/修饰符
%:全文, 相当于1,$
& :引用前面查找时查找到的整个内容
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
# cp /boot/grub/grub.conf /tmp/ # vim /tmp/grub.conf
末行模式
:%s/^[[:space:]]\+//
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
题目不知所云
# vim /tmp/rc.sysinit
末行模式
:%s/^#[[:space:]]\+//
4、为/tmp/grub.conf文件中前三行的行首加#号;
# vim /tmp/grub.conf
末行模式
:1,3s/^/#&/
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
# vim /etc/yum.repos.d/CentOS-Media.repo
末行模式
:s/=0/=1/
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201608300202
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20160830
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
9、工作日的工作时间内,每两小时执行一次echo “howdy”
# date +%Y%m%d%H%M 201609101425
# crontab -e #编辑定时任务 # crontab -l #查询 # crontab -r #移除所有任务
crontab文件格式 :分钟 小时 日 月 星期几 命令
*:代表每一个时间单位都执行一次,第一个“*”代表每分钟都执行一次(这里与具体时间单位容易混淆)
*/n : 每隔n个时间单位执行一次
n-M:连续时间范围
cp -a: 相当于-dR –preserv=all 复制时递归复制,保留所有属性,若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身
+:指定时间格式,%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟
`命令` :反引号里面为命令
注意:需清楚*含义,由小到大进行具体时间单位(秒,分钟)定义
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
# mkdir -pv /tmp/testdir-`date "+%F %T"` mkdir: 已创建目录 "/tmp/testdir-2016-09-10"
-p: 存在于不报错,且可自动创建所需的各目录;
-v: 显示详细信息
11、在此目录创建100个空文件:file1-file100
#/bin/bash #第一行指定解释脚本命令的程序 for i in `seq 100`;do touch file$i done
语法1
for 变量名 in 列表;do
循环体
done
语法2
for ((变量初始值;循环控制条件;变量变化表达式));do
循环体
done
12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
#!/bin/bash # sed -n 'n;p' /etc/passwd | cut -d':' -f1
sed选项
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
sed命令
n: 读取匹配到的行的下一行至模式空间
p: 显示模式空间中的内容
cut命令
-d’:’ -f1 以冒号为分隔符取第1字段
13、创建10用户user10-user19;密码同用户名;
#!/bin/bash # for i in {10..19};do id user$i &>/dev/null && echo "the user is exists" || useradd user$i && echo "user$i" |passwd --stdin user$i &>/dev/null done
输出重定向
&>:覆盖重定向(合并标准输出和错误输出为同一个数据流进行重定向)
&>/dev/null:标准输出重定向到空设备文件,不输出任何信息到终端
逻辑运算
&& 逻辑与
当命令1正确执行, 则命令2才会执行
当命令1执行不正确, 则命令2不会执行
|| 逻辑或
当命令1 执行不正确, 则命令2才会执行
当命令1正确执行, 则命令2不会执行
非交互方式修改用户密码
echo “PASSWORD” | passwd –stdin USERNAME
14、在/tmp/创建10个空文件file10-file19;
脚本
#!/bin/bash # for i in {10..19};do touch /tmp/file$i done
命令行
# touch file{10..19}
15、把file10的属主和属组改为user10,依次类推。
#/bin/bash # for i in {10..19};do if [ -e /tmp/file$i ];then chown user$i:user$i /tmp/file$i else echo "no such file." fi done
语法
if 双分支语句
if [条件判断式]
then
条件成立执行
else
条件不成立执行
fi
转载于:https://blog.51cto.com/2368360/1851450
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108885.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...