shell脚本练习题
1、一个文本类型文件,里面每行存放一个登录者的IP(某些行是重复的),写一个shell脚本输出登录的次数最多的用户;lp_input.txt的内容假设如下
219.217.49.14
175.43.4.87
87.48.98..1
59.73.38.25
219.217.49.14
59.73.38.142
59.73.38.25
219.217.49.14
#!/bin/bash
#test.sh
Sort ip_input | uniq –c | sort | tail -1 | awk ‘{print $2}’
Sort ip_input | uniq –c | sort -r | head -1 | awk ‘{print $2}’
Uniq –c选项他的作用是将重复的去掉,并且在每行前面添加此行重复次数
Sort 命令的默认排序方式是升序,使用 –r选项逆转排序结果,则出现的次数最多的ip则排在第一行
2、文件的拷贝,在根下创建4个文件m1.txt、m2.txt、m3.txt、m4.txt,用Shell编程,实现自动创建,m1、m2,m3,m4.txt,并将m1.txt, m2.txt、m3.txt、m4.txt,将个文件分别拷贝到各自相应的目录下
思路:用touch创建文件,mkdir命令创建目录,使用while循环依次拷贝,目录和文件表示
第一步#!/bin/bash
第二步cd/(cd到根下)
第三步 touch m{1..4}.txt(创建4个文件)
第四步i=1(设置变量)
第五步while[ #i –le 4 ](利用while设置循环次数)
第六步do(做什么)
第七步mkdir m$i
第八步 cp m$i.txt m$i
第九步i=$((i+1))意思每次复制都加一
第十步done 结束语
4、
判断拷贝
用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到dev目录下
思路:
使用read命令从键盘上获取的文件名
如何判断是否是字符设备
第一步#!/bin/bash
第二步echo –e “please input filename \n”(echo –e激活转义符\n换行且将光标移至下一行的行首)
第三步read FILENAME(使用read命令从键盘上获取文件名,read直接给FILENAME赋值 read –t 3指定读三秒)
第四步if [ -c $FILENAME ]
第五步then
第六步 cp $FLIENAME /dev
第七步else
第八步echo “It’s not character device fliename”
第九步fi结束语
4、创建目录
设计一个Shell程序,在/userdata目录下建立50个目录, 即user1~user50,并设置每一个目录权限,其他用户权限为,读;文件的所有者的权限是:读、写、执行;文件的所有者所在的组的权限为:读、执行
思路 while循环生成文件目录
判断/userdata是否存在,如果不存在直接创建子目录,不存在先创建/userdata再创建子目录
权限赋值rwxr-xr—数字方式754
第一步i=1(先取变量值)
第二步while [ $i –le 50 ]
第三步 do
第四步if [ -d /userdata] 判断有没有这个目录
第五步 then
第六步mkdir –p /userdata/user$I
第七步 else
第八步 mkdir /userdata mkdir –p /userdata/user$i
第九步fi
第十步chmod 754 /userdata/user$i
第十一步 i=$(($i+1))
第十二步 done