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

相关推荐

  • DNS-BIND

    1.实验环境 服务器类型 域名 IP 主DNS服务器 test.com. 192.5.24.101 从DNS服务器 192.5.24.102 子DNS服务器 ops.test.com. 192.5.24.201 备注:所有服务器需保持时间同步。 2.正向解析区域(192.5.24.101) 1)  安装bind 2)  编辑主配置文件,修…

    2017-05-31
  • RPM与YUM命令异同详解

    RPM和YUM都是用来安装程序的工具,但是它们有太多相似的用法以至于有事很难分清应该哪个那就来一起详细的了解一下他们的功能及用法,以及他们的相同以及不同之处。 RPM 软件包管理器功能:安装,卸载,升级,查询,校验,打包,数据库管理RPM在安装时不能处理程序之间复杂的依赖关系RPM可以验证软件包来源的合法性、完整性。常用选项: -i:表示安装。(常用:-iv…

    2017-06-18
  • N21天天第十六周课程练习

    1、源码编译安装LNMP架构环境; 一、安装Nginx 1、解决依赖 [root@localhost ~]# yum groupinstall 开发工具 服务器平台开发 -y 2、安装 [root@localhost ~]# tar xf pcre-8.37.…

    Linux干货 2016-12-14
  • 运维工具

      运维工具:Operations 通过工具,实现自动化运维 运维工作: BootStraping:当拿到硬件或软件才主机以后,安装操作系统 Bare Metal:pxe, cobbler(pxe的二次开发版) Virtaul Machine:image files(给予模板匹配安装) Configurati…

    Linux干货 2016-11-01
  • mariadb数据库的主从复制

    mariadb的主从复制

    2018-02-27

评论列表(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