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

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

一、编程语句

1、while 循环

while CONDITION; do

    循环体

done

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

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

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

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

会在循环体不断地被修正

进入条件:CONDITION 为true;

退出条件:CONDITION 为false;

2、until 循环

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/

4、rpm 包管理

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

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

   安装:

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

-v: verbose

-vv:

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

rpm -ivh PACKAGE_FILE …

2)rpm 包安装

    [install-options]

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

–nodeps :忽略依赖关系

–replacepkgs | replacefiles

–nosignature:  不检查来源合法性

–nodigest :不检查包完整性

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

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

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

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

%postun:  卸载后脚本; –nopostun

3)rpm 包升级

   升级:

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

相关推荐

  • pam_mysql认证ftp虚拟用户账号

    pam_mysql认证ftp虚拟用户账号: 虚拟用户:        用户账号存储于何处?        文件、MySQL、Redis、…       &nb…

    2017-06-13
  • 编译安装——吐血经验,内附脚本

    程序包编译安装: 源码包:name-VERSION-release.src.rpm         rpm由源码包安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装        &nbsp…

    Linux干货 2016-08-24
  • 了解Nginx

    Nginx Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝…

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

    第四周作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp -a /etc/skel /home/tuse1   [root@localhost …

    Linux干货 2016-07-17
  • 优云软件老司机:如何让运维操作更轻松、高效

    讲师介绍 庞辉富 •广通软件技术总监 •拥有10多年IT运维管理软件研发经验 •致力于自动化运维解决方案的研究和推广 •主导研发的产品广泛应用于海关、公安、能源等多个行业 技术发展给运维带来的挑战 当前的IT建设在这些新技术的演进下,我们看到的是呈现“双态IT”特征。Gartner也提出双模IT理论,与现在谈的双态IT是异曲同工的,不再是一种单纯的形态,而是…

    系统运维 2017-01-09
  • linux 加密和证书

    安全目标:机密性:明文传输的ftp, http,telnet 不安全数据完整性:身份验证:可用性:安全技术:认证,授权,安全通信,审计密码算法和协议:对称加密,公钥加密,单向加密,认证协议 1、对称加密:加密,解密使用同一个秘钥,效率高 DES:Data Encrption Standard, 56bit3DES:AES:AdvancedBlowfish缺点…

    2017-09-11

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