简单shell脚本习题

习题1

编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, 
CPU型号,内存大小,硬盘大小。

答案

#!/bin/bash  IPADDR=$(ifconfig | head -2 |tail -1 |awk {'print $2'})
SYSINFO=$(cat /etc/redhat-release)
KERNEL=$(uname -r)
CPU=$(lscpu | head -13 |tail -1 |awk {'print $2,$3,$4'})
Mem=$(free -h | awk {'print $2'} | head -2 | tail -1) echo "hostname is: `hostname`" echo "ipaddress is: ${IPADDR}" echo "systerm version is: ${SYSINFO}" echo "kernel version is: ${KERNEL}" echo "CPU is: ${CPU}" echo "Memory size is: ${Mem}" echo "Hard disk information:" df -h

习题2

编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/apps/backup/etc-YYYY-mm-dd.tar.gz。

答案

#!/bin/bash  [[ -d /apps/backup ]] ||mkdir -p /app/backup cd /apps/backup
tar -zcvf etc-`date +%F`.tar.gz /etc/ echo "backup is complete" 

习题3

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

答案

#!/bin/bash  percent=$(df -h | awk {'print $5,$6'} |sort -nr |awk {'print $1'}|head -1)
name=$(df -h | awk {'print $5,$6'} |sort -nr |awk {'print $2'}|head -1) echo "The most useful harddisk is ${name},has used ${percent}" 

习题4

编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序。

答案

#!/bin/bash  w |grep -v -e "FROM" -e "user" -e ":0\>" |awk {'print $1,$3'} |uniq -c |sort -nr

习题5

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

答案

#!/bin/bash  ID1=$(head -10 /etc/passwd | tail -1 |cut -d":" -f3)
ID2=$(head -20 /etc/passwd | tail -1 |cut -d":" -f3) let sum=$ID1+$ID2 echo "第十个用户ID为${ID1},第二十个用户ID为${ID2},其ID和为${sum}" 

习题6

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

答案

#!/bin/bash/ [ ! -e $1 ] && echo "无${1}文件" && exit 1 [ ! -e $2 ] && echo "无${2}文件" && exit 2 file1=$(cat $1 |grep "^$" |wc |tr -s " " |awk '{print $1}')
file2=$(cat $2 |grep "^$" |wc |tr -s " " |awk '{print $1}') let sum=$file1+$file2 echo "第一个文件为$1,第二个文件为$2,总计空行数量为$sum"

原创文章,作者:zero,如若转载,请注明出处:http://www.178linux.com/73141

(2)
上一篇 2017-04-10 21:27
下一篇 2017-04-10 22:38

相关推荐

  • 第一周作业

    1. 描述计算机的组成及其功能。
    2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
    3. 描述Linux的哲学思想,按照自己的理解对其解释性描述。
    4. 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、……等命令使用,配合相应实例阐述。
    5. 如何获取帮助信息,描述man文档章节划分。
    6. 罗列发行版基础目录名称命名法则及功用规定。

    Linux干货 2017-12-03
  • 08-vim文本编辑器

    简介: vi: Visual Interface,文本编辑器 文本:ASCII, Unicode 文本编辑种类: 行编辑器: sed 全屏编辑器:nano, vi vim – Vi Improved 其他编辑器: gedit 一个简单的图形编辑器 gvim 一个Vim编辑器的图形版本 打开文件: # vim [OPTION]… FIL…

    2017-03-16
  • CentOS7中nmcli网络管理及使用详解

    一、网络接口配置工具    在CentOS7系统中,强烈推荐使用nmcli管理网卡。下面记录的是nmcli的使用详解。    网络接口配置工具NetworkManager(简称为nmcli),该命令的作用是:可以查询网络连接的状态,也可以用来管理网络(设置系统每个网卡的特性)。该命令如何使用呢,其实可以用"n…

    Linux干货 2016-09-11
  • HAproxy实战

    HAproxy实验一 1、实验要求: (1) 动静分离discuzx,动静都要基于负载均衡实现; (2) 进一步测试在haproxy和后端主机之间添加varnish缓存(见实验二步骤); (3) 给出拓扑设计; (4) haproxy的设定要求: (a) 启动stats; (b) 自定义403、502和503的错误页; (c) 各组后端主机选择合适的调度方法…

    Linux干货 2016-11-15
  • 马哥linux0803课堂笔记

    课堂笔记   重定向的几种方式 标准输入 0 (stdin) 标准输出 1 (stdout) 标准错误 2 (stderr)   标准输入的重定向方法 cat < file cat << string (多行重定向) xxx aaa string结束 cat file | cat   标准输出的重定向 ls e…

    Linux干货 2016-08-08
  • 马哥教育网络班21期-第五周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符…

    Linux干货 2016-08-08

评论列表(1条)

  • renjin
    renjin 2017-04-12 12:03

    虽然内容不多,但能够给人眼前一亮的感觉,总结了bash脚本的练习。排版非常好,内容要是再多一些就更好了。