class 11 压缩软件(二)、shell编程(三)和软件包管理(一)

一、压缩软件(二)

tar

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/
结合压缩工具实现:归档并压缩
 -j: bzip2, -z: gzip, -J: xz

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

二、shell编程(三)(循环)

循环

循环执行
    将某代码段重复运行多次
    重复运行多少次:
        循环次数事先已知
        循环次数事先未知
    有进入条件和退出条件    
 for, while, until

for 循环

for  变量名 in  列表;do
    循环体
done
执行机制 :
   依次将列表中的元素赋值给“变量名”;每次赋值后即执行一次循环体;直到列表中的元素耗尽,循环结束


列表生成方式:
    (1)直接给出列表        1 2 3 4 5 6 7 8 9 10
    (2)整数列表:
        (a){start..end}
            echo {1..10}            1 2 3 4 5 6 7 8 9 10
        (b)$(seq [start [step]] end)
          [root@6 bin]# seq 0 10 100
            0
            10
            20
            30
            40
            50
            60
            70
            80
            90
            100
    (3)返回列表的命令
        $(COMMAND)
    (4)使用glob, , 如:*.sh
    (5)变量引用;
          $@, $*

while 循环

while CONDITION; do
        循环体doneCONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false” 终止循环
因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
进入条件:CONDITION 为true; 
退出条件:CONDITION 为false

until 循环

until CONDITION; do
  循环体done进入条件: CONDITION  为false退出条件: CONDITION  为true

循环控制语句continue

用于循环体中continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第1层while CONDTIITON1; do
    CMD1
    ...    if CONDITION2; then
    continue
    fi
    CMDn
    ...done

循环控制语句break

用于循环体中break [N] :提前结束第N层循环,最内层为第1层while CONDTIITON1; do
    CMD1
    ...    if CONDITION2; then
         break
    fi
    CMDn
    ...done

创建无限循环

while true; do
   循环体doneuntil false; do
   循环体
Done

三、软件包管理

软件运行环境

API :Application Programming InterfacePOSIX :Portable OS程序源代码 --> 预处理 -->  编译 --> 汇编 -->  链接
    静态编译:
    共享编译:.soABI :Application Binary InterfaceWindows 与Linux 不兼容    ELF(Executable and Linkable Format)
    PE(Portable Executable)
 库级别的虚拟化:    Linux: WINE
    Windows: Cywin

开发语言

系统级开发
    C
    C++
应用级开发
    java
    delphi
    Python    go
    php    perl
    ruby

包管理器

二进制应用程序的组成部分:
    二进制文件、库文件、配置文件、帮助文件
程序包管理器:
    debian :deb 文件, dpkg 包管理器
    redhat: rpm 文件, rpm 包管理器
    rpm: Redhat Package Manager
    RPM Package Manager

包命名

源代码:name-VERSION.tar.gz|bz2|xz    VERSION: major.minor.release
rpm 包命名方式:
    name-VERSION-release.arch.rpm
    例: :bash-4.2.46-19.el7.x86_64.rpm    VERSION: major.minor.release
    release :release.OS
    常见的arch: :
    x86: i386, i486, i586, i686
    x86_64: x64, x86_64, amd64
    powerpc: ppc
    跟平台无关:noarch

包命名和工具

包:分类 和 拆包
    Application-VERSION-ARCH.rpm:  主包
    Application-devel-VERSION-ARCH.rpm  开发子包
    Application-utils-VERSION-ARHC.rpm  其它子包
    Application-libs-VERSION-ARHC.rpm  其它子包
包之间:可能存在依赖关系,甚至循环依赖
    
解决依赖包管理工具:
    yum :rpm 包管理器的前端工具
    apt-get :deb 包管理器前端工具
    zypper: suse 上的rpm 前端管理工具
    dnf: Fedora 18+ rpm 包管理器前端管理工具

库文件

查看二进制程序所依赖的库文件:
    ldd /PATH/TO/BINARY_FILE
管理及查看本机装载的库文件:
    ldconfig
    /sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系
    配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
    缓存文件:/etc/ld.so.cache

包管理器

程序包管理器:
    功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作1、包文件组成 ( 每个包独有)
    RPM 包内的文件
    RPM 的元数据,如名称,版本,依赖性,描述等
    安装 或卸载时运行的脚本2 、数据库( 公共)
    程序包名称及版本
    依赖关系
    功能说明
    包安装后生成的各文件路径及校验码信息

程序包的来源

管理程序包的方式:
    使用包管理器: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包管理

CentOS 系统上使用rpm 命令管理程序包:
 安装、卸载、升级、查询、校验、数据库维护
 安装:
 rpm {-i|--install} [install-options] PACKAGE_FILE…
    -v: verbose    -vv:    -h:  以# 显示程序包管理执行进度    rpm -ivh PACKAGE_FILE ...

rpm 包安装

[install-options]
    --test:  测试安装,但不真正执行安装;dry run 模式    --nodeps :忽略依赖关系    --replacepkgs (重新安装相同的程序)| replacefiles(有重合的部分安装文件,强制安装) 
    --nosignature:  不检查来源合法性    --nodigest :不检查包完整性    --noscr ipts :不执行程序包脚本片断        %pre: ; 安装前脚本; --nopre        %post: ; 安装后脚本; --nopost        %preun: ; 卸载前脚本;--nopreun        %postun:  卸载后脚本; --nopostun

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:  强行升级

升级注意项

注意:
(1)不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核
(2)如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew) 后保留

积累应用

1、for、until、while实现倒三角形

#! /bin/bash
#author:lvasu
#description:
#version:0.1
#date:
read -p "请输入三角形行数:" line
# 每行左侧空格数=n-i
# 每行的*的数量=2*i-1
for ((i=1;i<=line;i++)) do
    for  ((j=1;j<=(line-i);j++))   do
            echo  -n " "
     done
     for  ((k=(2*i-1);k>=1;k--))   do
            echo  -n "*"
     done
     echo
done
echo '========================'
# 每行左侧空格数=n-i
# 每行*的数量=2*i-1
 i=1;
while  [ $i -le $line ];do
      space=$[$line-$i];             #每行左侧的空格数
      xing=$[$i*2-1];                 #每行*的数量
        j=1;
   while [ $j -le $space ];do
            echo -n " "
           let j++
   done
    k=$[space+xing]
    while [ $k -gt $space ];do
            echo -n "*"
            let k--
   done
    echo
  let i++
done
echo '========================'
# 每行左侧空格数=n-i
# 每行的最后一个*位置=space+xing=n-i+2*i-1=n+i-1
i=1;
until  [ $i -gt $line ];do
      j=1;
      space=$[$line-$i];             #每行左侧的空格数
      xing=$[$i*2-1];                 #每行*的数量
   until [ $j -gt $space ];do
            echo -n " "
           let j++
   done
    k=$[space+xing]
    until [ $k -le $space ];do
            echo -n "*"
            let k--
   done
    echo
   let i++
done

2016-8-20 2.JPG

2、for、until、while实现国际象棋棋盘

qipan3.sh
#! /bin/bash
#author lvasu
#description:
#version:0.1
#date:
i=1;
while  [ $i -le 8 ];do
    j=1;
  while  [ $j -le 8 ];do
         num=$[($i+$j)%2]
   if [ $num -eq 1 ];then
         if [ $j -ne 8 ];then
             echo  -ne '\E[41m  \E[0m'
         else echo  -e '\E[41m  \E[0m'
         fi
   else
          if [ $j -ne 8 ];then
             echo  -ne '\E[42m  \E[0m'
         else echo  -e '\E[42m  \E[0m'
         fi
   fi
    let j++
    done
    let i++
done
#! /bin/bash
#author lvasu
#description:
#version:0.1
#date:
i=1;
while  [ $i -le 8 ];do
    j=1;
  while  [ $j -le 8 ];do
         num=$[($i+$j)%2]
   if [ $num -eq 1 ];then
             echo  -ne '\E[41m  \E[0m'
   else
             echo  -ne '\E[42m  \E[0m'
   fi
    let j++
    done
    echo
    let i++
done

2016-8-20 1.JPG

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

(0)
上一篇 2016-08-21 20:46
下一篇 2016-08-21 20:46

相关推荐

  • httpd 2.2(Apache Web服务器)

    apache (Web服务器) 简介: Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。    Apache HTTP服务器是一个模块化的服…

    Linux干货 2016-03-30
  • LVS NAT + Keepalived HOWTO

    LVS NAT + Keepalived HOWTO   这篇文章主要讲解了,基于LVS/NAT,安装,运行与检测keepalived 目录     1、什么是keepalived?     2、规划你的网络 &nbsp…

    Linux干货 2015-09-21
  • 磁盘管理

    磁盘管理

    Linux干货 2017-10-27
  • N22-网络班 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp -r /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2、编辑/etc/group文件,添加组hadoop。…

    Linux干货 2016-09-19
  • Linux中的man命令使用方法

      Linux中的man命令就是manual的缩写,此命令是用来查看系统中自带的各种参考手册,帮助用户更好的了解并使用命令。   man命令的使用格式为: man COMMAND,即man后面跟上需要查询的命令,进到手册后有如下快捷按钮帮助用户更好的操作手册。     1.按键-j &nb…

    Linux干货 2016-10-20
  • ​redis cluster 安装指南

    公司的很多项目在使用redis主从。由于coder的各种毁灭性操作,迫切需要一个能带故障恢复的架构。因此新版的cluster,开始了测试。 一、Cluster 理论基础 Cluster介绍 Redis集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis…

    Linux干货 2016-02-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-22 10:32

    文章整体架构清晰,层次分明,通过实例演示让内容更为充实饱满,再接再厉。