简单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)
zerozero
上一篇 2017-04-10 21:27
下一篇 2017-04-10 22:38

相关推荐

  • 第二章 linux高级命令的简单使用以及shell脚本的简单制作

    重定向;正则表达式;grep;sed;vim;yum;shell脚本

    Linux干货 2018-03-17
  • 使用vim编辑器进行编程

    1.首先需要配置vim的语法风格,具体操作如下 # vim /etc/vimrc set nu 这是设置显示行号** set showmode 设置在命令行界面最下面显示当前模式等。 set ruler 在右下角显示光标所在的行数等信息 set autoindent 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐 set ts=4 注:…

    2017-04-09
  • 非常不错的编程技术教程

    下面是一些非常不错的编程教程,当然,全是英文版的。不过因为是新手教程,所以非常容易阅读,可以在学习技术的同时加强一下自己的英语阅读能力。 如果你是一个新手,建议你把本页设为你的收藏夹。C Introduction to C Programming C Optimization Tutorial Compiling C and C…

    Linux干货 2016-05-10
  • redis主/从配置及基于sentinel的故障转移

     一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统…

    Linux干货 2017-12-18
  • Codis集群3.03安装配置基础

    Codis基础 01.codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别。 codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。 codis架构图如下: 02.c…

    Linux干货 2016-09-26
  • 文本工具

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的

    2017-11-25

评论列表(1条)

  • renjin
    renjin 2017-04-12 12:03

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