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
下一篇 2016-08-18

相关推荐

  • linux中软链接和硬链接简单说明

    linux链接文件 在 Linux 上文件系统被分成两个部分:数据 (user data) 与元数据 (metadata)。数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如:文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含…

    Linux干货 2016-12-05
  • Linux Shell(脚本)编程入门

    为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建…

    Linux干货 2017-08-05
  • KeepAlived实现HAProxy双主并实现资源的动静分离

    KeepAlived实现HAProxy双主并实现资源的动静分离 前言 HAProxy介绍 实验拓扑 实验环境 实验步骤 配置后端httpd服务器 配置HAProxy实现backend负载均衡 测试动静分离效果 配置KeepAlived 测试KeepAlived 配置DNS DNS测试 最终测试 总结 前言 我们这次使用HAProxy作为负载均衡调度器来实现后…

    Linux干货 2016-04-16
  • awk

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

    Linux干货 2018-01-02
  • NFS

    NFS初探 NFS概述 NFS工作流程 NFS Server端设置 NFS工具与命令 NFS配置实例 NFS概述 NFS是什么? NFS,network file system(网络文件系统)的缩写,是一种实现文件共享的实现方式。 NFS的功能是什么 NFS基于RPC协议,实现远程系统调用,共享文件资源。 NFS工作流程 RPC,Remote Pr…

    Linux干货 2016-04-28
  • 破坏grub实验之一

    1、删除grub stage1阶段 [root@centos6 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 1+0 records in 1+0 records out 446 bytes …

    Linux干货 2016-09-19

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