一、
1、编写hello world脚本
2、编写一个脚本用于创建Linux账号并设置密码,带参数形式
#!/bin/bash
useradd $1
echo $2 | passwd --stdin $1
3、判断用户是否是root管理员,是的话安装http服务
if [ $USER == root ],then
yum -y install httpd
else
echo '您权限不足'
fi
4、编写一个脚本用户创建Linux账户,提示用户输入用户名和密码。要求输入密码时屏蔽输出。
#!/bin/bash
read -p '请输入您的大名: ' a
id $a &> /dev/null
if [ $? -eq 0 ];then
while [ $? -eq 0 ]
do
read -p '请输重新输入您的大名: ' a
done
else
useradd $a &> /dev/null
stty -echo
read -p '请输设置您的密码: ' b
echo $b | passwd --stdin $a
stty echo
echo $a"账户创建完成,请记住您的账户和密码"
fi
5、编写一个脚本,附带3个参数(整数),根据大小排序输出
6、测试某个网段的主机哪些开机,哪些关机
提示:使用ping命令
7、批量修改文件名,将当前路径下所有为.txt结尾的改为.doc
8、对1到100的数字进行求和
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、
1.写一个脚本,一键完成yum源配置
1)删除/etc/yum.repo.d下的文件
2) 创建一个叫local.repo的文件并写入配置信息
2.写一个脚本,要求实现:一键安装NFS服务,并创建一个文件夹较public,将其作为一个共享文件
#!/bin/bash
rpm -q nfs-utils &> /dev/null
if [ $? -eq 0 ];then
mkdir /public &> /dev/null
echo "/public *(ro)" > /etc/exports
systemctl restart nfs-server
echo "nfs-utils已安装,仅创建/public共享目录"
else
yum -y install nfs-utils
mkdir /public
echo "/public *(ro)" > /etc/exports
systemctl restart nfs-server
echo "nfs-utils安装成功,并创建/public共享目录"
fi
3.使用for循环打印一下图片
提示:使用双层循环
使用c语言风格的for循环
for((i=0;i<=9;i++))
1 *
22 **
333 ***
4444 ****
55555 *****
666666 ******
7777777 *****
88888888 ****
999999999 ***
**
*
for ((i=1;i<=9;i++))
do
for((j=1;j<=i;j++))
do
echo -n "*"
done
echo
done
for ((i=8;i>=1;i--))
do
for ((i=8;i>=1;i--))
do
for((j=1;j<=i;j++))
do
echo -n "*"
done
echo
done
done
4.写一个脚本,判断一个年份是否闰年
提示:满足下列条件的年份为闰年
1)被4整除并且能被100整除的年份
2)能被400整除的年
5.写一个脚本,提示输入路径,删除该路径下大小为0的文件(比如目录/mnt)
提示:使用find 命令
#!/bin/bash
read -p "请输入路径:" x
find $x -type f -size 0 -exec rm -rf {} \;
6.写一个脚本,自动对磁盘分区,格式化,并挂载
提示:使用fdisk的非交互模式 fdisk /dev/vda << EOF
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、1.生成一个随机8位的密码,密码的挑选范围包括:所有字母(大小写),数字,符号(*&.@$)
提示:使用字符串切割来实现
2.统计某个目录下有多少个文件,比如,统计/var/log下的文件数量
#提示 if [ -f 文件名 ] 判断是否为文件
3.简易切换防火墙,比如创建了一个脚本qiehuanF.sh,
执行脚本:source qiehuanF.sh block ,即可切换到block模式
提示:使用case判断
4.循环关闭局域网中所有的主机,比如176.130.9.0/24 (9是本教室,要试验请选择1-20除9以外)
提示:ssh ip poweroff
5.有一串数字: 0 1 1 2 3 5 8 13 21 34 ... ...
这串数字满足这样的规律: 后一个数字永远是前两个数字只和
写一个脚本,列出第100个数字之前的序列
提示:利用数组 , list=(0 1)
6.模仿clone-vm7,编写一个一键生成虚拟机的脚本
7.自选题,如果你能活着到这,请用脚本一键实现:PXE自动装机部署(除了kickstart需要手动配置)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四、
正则表达式练习
1,过滤包含the关键字
2,过滤不包含the关键字
3,过滤不论大小写the关键字
4,过滤test或taste这两个单字
5,过滤有oo的字节
6,过滤不想要oo前面有g的
7,过滤oo前面不想有小写字节
8,过滤有数字的那一行
9,过滤以the开头的
10,过滤以小写字母开头的
11,过滤开头不是英文字母
12,过滤行尾结束为小数点.那一行
13,过滤空白行
14,过滤出g??d的字串
15,过滤至少两个o以上的字串
16,过滤g开头和g结尾但是两个g之间仅存在至少一个o
17,过滤两个o的字串
18,过滤g后面接2到5个o,然后在接一个g的字串
19,过滤g后面接2个以上o的
1,grep -n 'the' regular_express.txt
2,grep -vn 'the' regular_express.txt
3,grep -in 'the' regular_express.txt
4,grep -n 't[ae]st' regular_express.txt
5,grep -n 'oo' regular_express.txt
6,grep -n '[^g]oo' regular_express.txt
7,grep -n '[^a-z]oo' regular_express.txt
8,grep -n '[0-9]' regular_express.txt
9,grep -n '^the' regular_express.txt
10,grep -n '^[a-z]' regular_express.txt
11,grep -n '^[^a-zA-Z]' regular_express.txt
12,grep -n '\.$' regular_express.txt
13,grep -n '^$' regular_express.txt
14,grep -n 'g..d' regular_express.txt
15,grep -n 'ooo*' regular_express.txt
16,grep -n 'goo*g' regular_express.txt
17,grep -n 'o\{2\}' regular_express.txt
18,grep -n 'go\{2,5\}g' regular_express.txt
19,grep -n 'go\{2,\}g' regular_express.txt
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
五、
假设我们有这样一个待处理的文件grade.txt,内容如下:
M.Tansley 05/99 48311 Green 8 40 44 J.Lulu 06/99 48317 green 9 24 26 P.Bunny 02/99 48 Yellow 12 35 28 J.Troll 07/99 4842 Brown-3 12 26 26 L.Tansley 05/99 4712 Brown-2 12 30 28 题目1:打印整个文件
题目2:打印第一和第四个列
题目3:打印表头Name Belt,然后显示文档第一列和第四列
题目4:打印第四列包含Brown的行
题目5:打印第三列包含48的行
题目6:显示第三列是48的行
题目7:显示第七列不超过40的行
题目8:打印第四列不是Brown-2的行
题目9:当第六列大于第七列时,显示:$6 大于 $7
题目10:当第一列的第四个字符是a时,显示该行
题目11:显示包含Yellow或Brown的行 (提示:$0表示所有列)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
题目1:参考答案:
awk '{print}' grade.txt
题目2:参考答案
awk '{print $1,$4}' grade.txt
题目3:参考答案
awk 'BEGIN {print "Name\tBelt"}{print $1"\t"$4}' grade.txt
题目4:参考答案
awk '$4~/Brown/ {print}' grade.txt
题目5:参考答案
awk '$3 ~/48/ {print}' grade.txt
题目6:参考答案
awk '$3=="48" {print}' grade.txt
题目7:参考答案
awk '$7<=40' grade.txt
题目8:参考答案
awk '$4 != "Brown-2" {print}' grade.txt
题目9:参考答案
awk '$6 > $7 {print $6,"大于",$7}' grade.txt
题目10:参考答案
awk '$1 ~/^...a/' grade.txt
题目11:参考答案
awk '$0 ~/Yellow|Brown/' grade.txt
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
六、
在文本/var/ftp/pub/data.txt用sed或awk查询:
题目 1:显示包含 San 的行
sed -n '/San/p' /var/ftp/pub/data.txt
awk '/San/' /var/ftp/pub/data.txt
题目 2:显示以 J 开头的人名所在的行
sed -n '/^J/p' /var/ftp/pub/data.txt
awk '/^J/' /var/ftp/pub/data.txt
题目 3:显示 700 结尾的行
sed -n '/700$/p' /var/ftp/pub/data.txt
awk '/700$/' /var/ftp/pub/data.txt
题目 4:显示不包 834 的行
sed -n '/[^834]/ p' /var/ftp/pub/data.txt
awk '/[^834]/ ' /var/ftp/pub/data.txt
题目 5:显示电话号码的区号为 834 的行
sed -n '/834-/ p' /var/ftp/pub/data.txt
awk '/834-/' /var/ftp/pub/data.txt
题目 6:显示这样的行:它包含一个大写字后跟四个小写字母,逗号,空格,和一个
大写字母
sed -n '/[A-Z][a-z]\{4\}, [A-Z]/p' /var/ftp/pub/data.txt
sed -rn '/[A-Z][a-z]{4}, [A-Z]/p' /var/ftp/pub/data.txt
题目 7:显示以 K 或 k 开头的行
sed -n '/^[kK]/p' /var/ftp/pub/data.txt
awk '/^[kK]/' /var/ftp/pub/data.txt
题目 8:显示工资为六位数的行
sed -rn '/[0-9]{6}/p' /var/ftp/pub/data.txt
awk '/[0-9]{6}/' /var/ftp/pub/data.txt
题目 9:显示包括 Lincoln 或 lincoln 的行
sed -n '/[lL]incoln/p' /var/ftp/pub/data.txt
题目 10:把 Jon 的名字改成 Jonathan
sed -n 's/Jon/Jonathan/p' /var/ftp/pub/data.txt
题目 11:删除文件头 3 行内容
sed '1,3d' /var/ftp/pub/data.txt
题目 12:显示 5-10 行
sed -n '5,10p' /var/ftp/pub/data.txt
题目 13:把三个星***添加到有 Fred 开头的行尾
sed -n 's/^Fred/***/p' /var/ftp/pub/data.txt
题目 14:删除空白行
sed '/^$/d' /var/ftp/pub/data.txt
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
题目1:显示包含San的行
题目2:显示以J开头的人名所在的行
题目3:显示700结尾的行
题目4:显示不包834的行
题目5:显示电话号码的区号为834的行
题目6:显示这样的行:它包含一个大写字后跟四个小写字母,逗号,空格,和一个
大写字母
题目7:显示以K或k开头的行
题目8:显示工资为六位数的行
题目9:显示包括Lincoln或lincoln的行
题目10:把Jon的名字改成Jonathan
题目11:删除文件头3行内容
题目12:显示5-10行
题目13:把三个星***添加到有Fred开头的行尾
题目14:删除空白行
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
题目1:参考答案:
#sed -n‘/San/p’ datafile
题目2:参考答案:
#sed -n ‘/^J/p’ datafile
题目3:参考答案:
#sed -n ‘/700$/p’ datafile
题目4:参考答案:
#sed -n '/834/! p' datafile
题目5:参考答案:
#sed -n /:834-/p datafile
题目6:参考答案:
#sed -n '/[A-Z][a-z]\{4\}, [A-Z]/p' datafile
题目7:参考答案:
#sed -n '/^[Kk]/p' datafile
题目8:参考答案:
#sed -n '/:[0-9]\{6\}$/p' datafile
题目9:参考答案:
#sed -n '/[Ll]incoln/p' datafile
题目10:参考答案:
#sed -n s/Jon/Jonathan/p datafile
题目11:参考答案:
#sed 1,3d datafile
题目12:参考答案:
#sed -n 5,10p datafile
题目13:参考答案:
#sed -n /^Fred/s/$/***/p datafile
题目14:参考答案:
#sed '/^$/d' datafile