Shell基础练习题PPT
- 格式:ppt
- 大小:187.50 KB
- 文档页数:16
Shell的练习题1、判断/etc/inittab⽂件是否⼤于100⾏,如果⼤于,则显⽰”/etc/inittab is a big file.”否者显⽰”/etc/inittab is a small file.”#!/bin/bashrow=`cat /etc/inittab|wc -l` #获取/etc/inittab⽂件的总⾏数if [ $row -gt 100 ];then #判断⾏数是否⼤于100echo "/etc/inittab is a big file" #如果⼤于则输出“/etc/inittab is a big file”elseecho "/etc/inittab is a small file" #如果⼩于等于则输出“/etc/inittab is a small file”fi2、给定⼀个⽤户,来判断这个⽤户是什么⽤户,如果是管理员⽤户,则显⽰“该⽤户为管理员”,否则显⽰“该⽤户为普通⽤户”#!/bin/bashuser=`id -u $1` #获取$1⽤户的uidif [ $user -eq 0 ];then #判断$user⽤户的uid值(管理员⽤户的uid为0)是否为0echo "该⽤户为管理员⽤户" #如果为0则输出“该⽤户为管理员⽤户”elif [ $user -ge 500 ];then #判断$1⽤户的uid值(普通⽤户的uid为500+)是否为500+echo "该⽤户为普通⽤户" #如果为500+则输出“该⽤户为普通⽤户”fi3、判断某个⽂件是否存在#!/bin/bashif [ -f $1 ];th #判断$1这个⽂件是否存在echo "$1⽂件已经存在" #如果⽂件存在则输出“$1⽂件已经存在”elseecho "$1⽂件不存在" #如果⽂件不存在则输出“$1⽂件不存在”fi4、判断当前系统上是否有⽤户的默认shell程序是否为bash程序,如果有,就显⽰有多个这类⽤户,否则就显⽰没有这类⽤户;【并且显⽰出那些⽤户是bash】#!/bin/bashnum=`cat /etc/passwd |grep 'bash$'|wc -l` #获取默认为bash的⽤户数user=`cat /etc/passwd | cut -d ":" -f 1` #获取默认为bash的⽤户if [ $num -eq 0 ];then #如果⽤户数是否为0echo "没有这类⽤户" #如果为0则输出“没有这类⽤户”elseecho "user" #否则显⽰⽤户名fi5、写出⼀个脚本程序,给定⼀个⽂件,⽐如:/etc/inittab a、判断这个⽂件中是否有空⽩⾏? b、如果有,则显⽰其空⽩⾏的⾏号,否则显⽰没有空⽩⾏#!/bin/bashrow=`cat /etc/iiittab |grep '^$' |wc -l` #统计/etc/inittab⽂件中的空⽩⾏数if [ $row -eq 0 ]:then #判断⽂件中有没有空⽩⾏echo "没有空⽩⾏" #如果没有则输出“没有空⽩⾏”elseecho "$row" #如果有输出有多少⾏fi6、写⼀个脚本程序,给定⼀个⽤户,判断其UID与GID是否⼀样,如果⼀样,就显⽰该⽤户为“good guy”,否则显⽰为“bad guy”#!/bin/bashuid=`id $1 | cut -d "=" -f 2 |cut -d "(" -f 1` #给定⼀个⽤户$1,获取它的uidgid=`id $1 | cut -d "=" -f 3 |cut -d "(" -f 1` #给定⼀个⽤户$1,获取它的uidif [ $uid -eq $gid ];then #判断uid和pid是否相等echo "good guy" #如果相等则输出“good guy”elseecho "bad guy" #如果不想等则输出“bad guy”fi7、写⼀个脚本程序,给定⼀个⽤户,获取其密码警告期限;然后判断⽤户最近⼀次修改密码的时间距离今天是否已经⼩于警告期限;注:/etc/shadow ⽂件以“:”为分隔符分为:登录名:加密⼝令:最后⼀次修改时间:最⼩时间间隔:最⼤时间间隔:告警时间:不活动时间:失效时间:标志#!/bin/bashW=`grep "dmm" /etc/shadow | cut -d: -f6` #取出密码过期的警告时间S=`date +%s` #指定系统元年到现在经过的时间(秒)T=`expr $S/86400` #指定系统元年到现在经过的天数(天)L=`grep "^dmm" /etc/shadow | cut -d: -f5` #取出密码使⽤的过期时间N=`grep "^dmm" /etc/shadow | cut -d: -f3` #取出密码最近⼀次修改的时间SY=$[$L-$[$T-$N]] #算出还剩下的多少天过期(SY)if [ $SY -lt -$W ]; then #判断剩下的过期时间是否⼩于警告时间echo "Worning" #如果⼩于发出警告elseecho "OK" #否则输出“ok”fi8、判断命令历史中历史命令的总条⽬是否⼤于1000,如果⼤于,则显⽰“some command will gone”,否则显⽰OK#!/bin/bashrow=`history|wc -l` #获取history的⾏数if [ $row -gt 1000 ];then #判断⾏数是否⼤于1000echo "some command will gone" #如果⼤于输出“some command will gone”elseecho "ok" #否则输出“ok”fi9、给定⼀个⽂件,如果是普通⽂件,就显⽰出来,如果是⽬录⽂件,也显⽰出来,否则就显⽰“⽆法识别”#!、bin/bashfile=`ll $1 | cut -b 1` #获取$1的⽂件类型if [ $file=='d' ];then #判断⽂件类型是否为d(d代表⽬录⽂件)echo "$1是⽬录⽂件" #如果是输出“$1是⽬录⽂件”elif [ $file=='-' ];then #判断⽂件类型是否为-(-代表普通⽂件)echo "$1是普通⽂件" #如果是输出“$1是⽬录⽂件”elseecho "$1⽆法识别" #否则输出“$1⽆法识别”fi10、写⼀个脚本,能接受⼀个参数(⽂件路径),判断这个参数如果是⼀个存在的⽂件就显⽰“ok”,否则显⽰“No such file”#!/bin/bashif [ -f $1 ];then #判断$1是否存在echo "ok" #如果存在输出“ok”elseecho"No such file" #否则输出“No such file”fi11、写⼀个脚本,给脚本传递两个参数,显⽰两则之和和两者之积#!/bin/bashsum=$(($1+$2)) #获取$1和$2的和product=$(($1*$2)) #获取$1和$2的乘积echo $sum #输出和echo $product #输出乘积。
(完整)49道shell基础题编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)49道shell基础题)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)49道shell基础题的全部内容。
一、vi编辑器的使用练习1.请在 /tmp 这个目录下建立一个名为 vitest 的目录;mkdir /tmp/vitest2.进入 vitest 这个目录当中。
cd /tmp/vitest3.将 /etc/man。
config 拷贝到本目录底下;cp /etc/man。
config .4.使用 vi 开启本目录下的 man。
config 这个文件.Vi man。
config5.在 vi 中设定一下行号。
:set nu6.移动到第58行,看到的是什么内容?58G7.移动到第一行,并且向下搜寻一下bzip2 这个字符串,请问他在第几行?1G 然后 /bzip2 在118行8.接着下来,我要将 50 到 100 行之间的 man 改为 MAN ,并且一个一个挑选是否需要修改,如何下达指令?:50,,100s/man/MAN/gc9.修改完之后,突然反悔了,要全部复原,有哪些方法?一直按u,直到回到想要的地方10.我要复制 51 到 60 行这十行的内容,并且贴到最后一行之后;51G 然后10yy 按下G到最后一行然后p即可11.删除 11 到 30 行之间的 20 行;11G 20dd12.将这个文件另存成一个 man.test.config 的文件名;:w man。
test。
config13.去到第 29 行,并且删除 15 个字符;29G 15x14.在第一行新增一行,该行内容输入“I am a student”1G O 然后输入即可15.保存后离开:wq二、文件和目录管理1.查看当前的路径。