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

相关推荐

  • 推荐CentOS Linux下的分区及格式化工具

    简介 伴随着科技的飞速发展,越来越多的企业对于服务器的稳定要求越来越高,越来越多的企业开始采用linux系统来部署自己的服务,以求高效的稳定性,当然任何操作系统都需要一个最基本的基础,那就是硬盘,及硬盘分区,今天来给大家推荐几款CentOS Linux下的分区工具及如何查看分区环境,也会给大家来带一些硬盘的基本知识 一、硬盘的接口类型 分区肯定是对硬盘进行分…

    2017-03-19
  • N21天天第十周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) CentOS主机按以下顺序启动 1、POST加电自检 2、BIOS读取CMOS中的BIOS设置的参数来识别基础硬件,寻找到启动设备 3、MBR 1)读取启动设备MBR中前446字节的bootloader 2)读取MBR后的扇区用来识别grub以及内核kernel所在的区域 3)启动g…

    Linux干货 2016-09-26
  • DNS and BIND 配置指南

    前言     说来接触Linux也有一年了,BIND是我曾经学习RH系Linux接触的第一个服务,对我有着莫大的意义,当初差点因为这个服务难以配置而放弃Linux,今天学完马哥的bind相关系列视频之后,写一篇DNS and BIND的基础到进阶。 一、DNS的基础知识 DNS是什么? DNS(Domain Name …

    Linux干货 2016-03-21
  • sed之高级命令的解析

                sed工作机制中另一个逻辑空间用于作为模式空间的好帮手,就是叫保持空间(hold space),在模式空间中处理一行内容会继续处理下一行,那么对于处理过的行可能还有其他处理,因此可以先把处理好的数据存放在hold s…

    Linux干货 2016-08-08
  • 开始学习Linux的一些建议

    建议读者范围 有开发经验者。 科研人员(由其Numrical)。 动手能力强的。 只是好奇,对于Linux只是浅尝辄止的就不建议继续往下看了。 端正学习态度 Linux不等于骇客(or Cracker)。 当然众所周知很多“黑客工具”都是Linux平台上的,我帮助过很多Linux小白发现他们殊途同归都是朝着类似Aircrack-ng去的。 但他们不知道的是:…

    Linux干货 2015-02-26
  • vim编辑器练习&任务计划&脚本编程练习

    请详细总结vim编辑器的使用并完成以下练习题 vim总结: vi:Visual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。 文本编辑器的种类:  行编辑模式:所谓行编辑器是指一行一行来编辑处理的工具,如sed。  全屏编辑器:编辑空间占据整个屏幕,如nano…

    Linux干货 2016-10-31

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