Linux基础知识之Shell编程练习题

1.编写脚本systeminfo.sh,显示主机名、IP地址、操作系统版本、内核版本、CPU型号、内存大小、硬盘大小

COLOR="\033[1;35m" #设置颜色
COLOREND="\033[0m" #设置颜色

echo -e "HostName is $COLOR `hostname` $COLOREND" #打印主机名

echo -e "Ipaddress is $COLOR `ifconfig ens33 | grep "netmask" | tr -s " " | cut -d" " -f3` $COLOREND" #打印IP地址

echo -e "OsVersion is $COLOR `uname -sr` $COLOREND" #打印系统版本

echo -e "kernelVersion is $COLOR `cat /etc/redhat-release`$COLOREND" #打印内核版本

echo -e "CPU is $COLOR`lscpu | cut -d: -f2 | head -13 | 
tail -1 | tr -s " "`$COLOREND" #打印CPU型号

echo -e "Memory Size is $COLOR `free -h | tr -s " " : | tail -2 |head -1 | cut -d: -f2` $COLOREND" #打印内存大小

echo -e "Hard disk Size is $COLOR `lsblk | head -2 |grep "sda" |tr -s " " | cut -d" " -f4` $COLOREND"  #打印硬盘大小    

2.编写脚本backup.sh,可实现每日将/etc/目录备份到/backup/etcYYYY-mm-dd中

echo "BACK UP BEGIN!!!" #提示友好消息

sleep 2 #休眠2秒

mkdir /data/backup #创建文件夹    
                                                                                                                                                                                           
cp -av /etc/ /data/backup/etc`date +%F` #-av将文件的全部属性拷贝过去并且显示执行过程

echo "BACK UP SUCCESS!!!" #提供友好消息

3.编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值

COLOR="\033[1;35m" #设置字体颜色

COLOREND="\033[0m" #设置字体颜色                                                                                                                                                                                              

echo -e  "$COLOR Hard disk usage $COLOREND" #设置提示语

echo -e  "$COLOR`df -h | grep "^/dev" | tr -s " " | cut -d" " -f5 | sort -nr | head -1`$COLOREND" #打印输出硬盘分区空间利用率

4编写脚本sumid.sh,计算/etc/passwd文件中的第10个用户和第20个用户的UID之和

UidOne=`getent passwd | head -10 | tail -1 | cut -d: -f3` #获取第10个用户的UID并赋值给UidOne

UidTow=`getent passwd | head -20 | tail -1 | cut -d: -f3` #获取第20个用户UID并赋值给UidTow

let z=$UidOne+$UidTow #相加

echo $z #打印值

5.编写脚本sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

read -p "input the first fileName:" f1 # 利用read -p 提示友好消息和输入对应文件名

read -p "input the sencond fileName:" f2 # 利用read -p 提示友好消息和输入对应文件名

sum1=`cat $f1 | grep "^$" | wc -l` # ^$表示空行的意思,并用wc -l统计输出总行数

sum2=`cat $f2 | grep "^$" | wc -l` # ^$表示空行的意思,并用wc -l统计输出总行数
                                                                                                                                                                             
let sum=$[sum1+sum2]               # 用let算数命令进行相加算出总和

echo FirstFileName is $f1          # 打印文件名
 
echo SencondFileName is $f2        # 打印文件名

echo FileNum is $sum               # 打印结果

6.编写脚本sumfile.sh,统计/etc,/var,/usr目录中共有多少个一级子目录和文件

read -p "input the first direction  " d1  # read -p 执行脚本后提示要输入的信息
 
read -p "input the two direction  " d2    # read -p 执行脚本后提示要输入的信息

read -p "input the direction  " d3        # read -p 执行脚本后提示要输入的信息

num1=`ls -a /$d1 | grep -v "^\.\{1,2\}$" | wc -l`  # "^\.\{1,2\}$" \.转义符 取目录的. 和..

num2=`ls -a /$d2 | grep -v "^\.\{1,2\}$" | wc -l`  # "^\.\{1,2\}$" \.转义符 取目录的. 和..

num3=`ls -a /$d3 | grep -v "^\.\{1,2\}$" | wc -l`  # "^\.\{1,2\}$" \.转义符 取目录的. 和..
                                                                                                                                                              
let sum=$[num1+num2+num3]  #计算总和 $[1+2] == $1+$2

echo $sum                  #打印结果

7.检查磁盘利用率是否大于80%,是的话提示磁盘将满,否则不提示 

echo "============  磁盘检测  ============="

User=`df -h | grep "^/dev" | tr -s " " % | cut -d"%" -f5 | sort -nr | head -1`

Size="80"

test $User -gt $Size && echo "你的磁盘大于80%的利用率了" || echo "你的磁盘容量满足"  

# -gt 是否大于
# -ge 是否大于等于
# -eq 是否等于
# -ne 是否不等于
# -lt 是否小于
# -le 是否小于或等于
#test  EXPRESSION -gt  EXPRESSION

================== 短路与 ===============
true true = true
false true = false
false false = lalse 
 
若第一个为true,则不执行后面
若第一个为false,则执行后面

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值