shell编程、程序包管理及习题

shell编程、程序包管理及习题

一、编程语句

1while 循环

while CONDITION; do

    循环体

done

CONDITION :循环控制条件;进入循环之前,先做一次判

断;每一次循环之后会再次做判断;条件为“true” ,则执行

一次循环;直到条件测试状态为“false” 终止循环

因此:CONDTION 一般应该有循环控制变量;而此变量的值

会在循环体不断地被修正

进入条件:CONDITION true

退出条件:CONDITION false

2until 循环

until CONDITION; do

      循环体

done

进入条件: CONDITION  false

退出条件: CONDITION  true

3、循环控制语句continue

 用于循环体中

continue [N] :提前结束第N 层的本轮循环,而直接进入下一

轮判断;最内层为第1层 层

while CONDTIITON1; do

    CMD1

    …

    if CONDITION2; then

         continue

    fi

    CMDn

    …

done

4、循环控制语句break

用于循环体中

break [N] :提前结束第N 层循环, 最内层为第1

 while CONDTIITON1; do

      CMD1

      …

      if CONDITION2; then

              break

      fi

      CMDn

      …

done

二、打包压缩

 tar [OPTION]…

(1)  创建归档

tar -c -f / PATH/TO/SOMEFILE .tar FILE…

tar cf / PATH/TO/SOMEFILE .tar FILE…

(2)  查看归档文件中的文件列表

tar -t -f  /PATH/TO/SOMEFILE .tar

(3)  展开归档

tar -x -f  /PATH/TO/SOMEFILE .tar

tar -x -f  /PATH/TO/SOMEFILE .tar -C  /PATH/

v  结合压缩工具实现:归档并压缩

-j: bzip2, -z: gzip, -J: xz

30

cpio

 复制  从或到文件

 cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复

的工具,它可以解压以“.cpio” 或者“.tar” 结尾的文件。

 cpio [ 选项] >  文件名或者设备名

 cpio [ 选项] <  文件名或者设备名

  选项

-o  将文件拷贝打包成文件或者将文件输出到设备上

-i  解包,将打包文件解压或将设备上的备份还原到系统

-t  预览,查看文件内容或者输出到设备上的文件内容

-v  显示打包过程中的文件名称。

-d  解包生成目录,在cpio 还原时,自动的建立目录

-c  一种较新的存储方式

实例

 将 将etc 目录备份:

find ./etc -print |cpio -ov >etc.cpio

  内容预览

cpio tv < etc.cpio

  要解包文件

cpio iv <etc.cpio

cpio idv < etc.cpio

三、rpm包管理

1、包管理器

二进制应用程序的组成部分:

二进制文件、库文件、配置文件、帮助文件

 程序包管理器:

debian deb 文件, dpkg 包管理器

redhat: rpm 文件, rpm 包管理器

rpm: Redhat Package Manager

RPM Package Manager

2、包文件组成

  程序包管理器:

功能:将编译好的应用程序的各组成文件打包一个或几个

程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、

升级和校验等管理操作

 1)包文件组成 、包文件组成 ( 每个包独有)

RPM 包内的文件

RPM 的元数据,如名称,版本,依赖性,描述等

安装 或卸载时运行的脚本

 2 )、数据库( 公共)

程序包名称及版本

依赖 关系

功能 说明

包安装后生成的各文件路径及校验码信息

3、程序包的来源

管理程序包的方式:

使用包管理器:rpm

使用前端工具:yum, dnf

获取程序包的途径:

(1)  系统发版的光盘或官方的服务器;

CentOS 镜像:

https://www.centos.org/download/

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

(2)  项目官方站点

程序包的来源

(3)  第三方组织:

Fedora-EPEL: :

Extra Packages for Enterprise Linux

Rpmforge:RHEL 推荐,包很全

搜索引擎:

http://pkgs.org

http://rpmfind.net

http://rpm.pbone.net

https://sourceforge.net/

4rpm 包管理

1CentOS 系统上使用rpm 命令管理程序包

   安装、卸载、升级、查询、校验、数据库维护

   安装:

rpm {-i|–install} [install-options] PACKAGE_FILE

-v: verbose

-vv:

-h:  # 显示程序包管理执行进度

rpm -ivh PACKAGE_FILE …

2rpm 包安装

    [install-options]

–test:  测试安装,但不真正执行安装;dry run 模式

–nodeps :忽略依赖关系

–replacepkgs | replacefiles

–nosignature:  不检查来源合法性

–nodigest :不检查包完整性

–noscipts :不执行程序包脚本片断

%pre: ; 安装前脚本; –nopre

%post: ; 安装后脚本; –nopost

%preun: ; 卸载前脚本; –nopreun

%postun:  卸载后脚本; –nopostun

3rpm 包升级

   升级:

rpm {-U|–upgrade} [install-options]  PACKAGE_FILE …

rpm {-F|–freshen} [install-options]  PACKAGE_FILE …

upgrade :安装有旧版程序包,则“升级”

如果不存在旧版程序包,则“安装”

freshen :安装有旧版程序包,则“升级”

如果不存在旧版程序包,则不执行升级操作

rpm -Uvh PACKAGE_FILE …

rpm -Fvh PACKAGE_FILE …

–oldpackage :降级

–force:  强行升级

习题

until实现下列作业(有些习题不会做,等老师下次上课,我好好跟着老师做做)

1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log,并提示该用户退出系统。

图片1.png 

2、随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出.

答:

图片2.png

3、编写脚本,求100以内所有正整数之和

答:

图片3.png 

4、编写脚本,通过ping命令探测10.1.44.1-254范围内的所有主机的在线状态,统计在线主机和离线主机各多少。

答:

图片4.png 

5、编写脚本,打印九九乘法表

 

6、编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数字,并显示其中的最大者和最小者

答:

7、编写脚本,实现打印国际象棋棋盘

答:

8、打印等腰三角形

答: 

9、安装centos6.7,centos6.8kernel升级

答:

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

(0)
178babyhanggege178babyhanggege
上一篇 2016-08-18 10:09
下一篇 2016-08-18 10:09

相关推荐

  • 第一周的作业

    1、描述计算机的组成及其功能。 主要分为五个部分: 控制器:计算机的中枢神经,控制总线使用权限、寻址、管理各类资源的分配。 运算器:对数据进行各种算数运算和逻辑运算。 存储器:通常指内存RAM,CPU需要运行的程序以及数据都存放在存储器中供CPU调用处理。 (以上三者为计算机核心的三大部件,依靠这三大部件即可完成核心工作。) 输入设备:比如鼠标、键盘,使用户…

    Linux干货 2016-11-02
  • lvs-nat的实现

    nat的知识点

    2018-03-03
  • CentOS7修改网卡为eth0

    1.编辑网卡信息 [root@linux~]# cd /etc/sysconfig/network-scripts/  #进入网卡目录 [root@linux~network-scripts]# mv ifcfg-eno16777728 ifcfg-eth0  #重命名网卡名称 [root@linux network-…

    Linux干货 2016-10-25
  • Linux运维学习历程-第十一天-bash逻辑运算、测试类型和脚本语句

    概述:本篇重点介绍linux当中默认设立了类型,bash的逻辑运算、测试类型和脚本语句,本篇内容极其重要,望小伙伴们在日后的学习中用心学习 一、逻辑运算 变量:   本地变量、环境变量、局部变量、位置参数变量、特殊变量   变量赋值:name=value,export name=value,declare -x nam…

    Linux干货 2016-08-24
  • DNS以及bind使用

    DNS以及域名分发布式数据库相关知识      一、 DNS相关介绍           1. DNS(Domain Name Service):域名解析服务协议         &nbsp…

    2015-03-17
  • CentOS 7 安装 mysql-5.7.14

    在centos7上安装 路上遇过各种坑 把在centos7正确安装mysql-5.7.14分享一下 1. CentOs7 默认的数据库为MariaDB,先卸载MariaDB,否则安装mysql,引起冲突 rpm -qa mariadb rpm -e –nodeps mariadb 2. 准备好工作环境 mkdir /application&nbs…

    Linux干货 2017-05-07

评论列表(2条)

  • 178babyhanggege
    178babyhanggege 2016-08-18 12:04

    作业中的第五题:针对九九乘法表,今天学习了使用for(()),具体编程如下:
    “for999.sh” 8L, 147C
    #!/bin/bash
    for ((i=1;i <= 9;i++ ));do
    for (( j=1;j <=i;j++ ));do
    echo -ne "$j*$i=$[$i*$j]\t"
    done
    echo " "
    done

  • 178babyhanggege
    178babyhanggege 2016-08-19 09:29

    作业中的第八题,答案
    [root@centos6bin]#cat sanjiao.sh
    #!/bin/bash
    read -p “number:” n
    for j in `seq $n` ;do
    for a in `seq $[$n-$j]`;do
    echo -n ” ”
    done

    b=$[$j*2-1]
    for m in `seq $b`;do
    echo -n “*”
    done
    echo
    done