1、软件包安装

1、rpm包安装

  • 自己解决依赖性
  • 查询相关依赖
  • rpm包命名规则

    • image.png

      1、手工安装

      1、安装

  • 命令

    1. rpm -ivh 完整包名
    • 选项
      • -i install安装
      • -v 显示更详细的信息
      • -h 打印显示安装进度
        • image.png
          • 生成环境不允许是用—nodeps
          • —force会强制重新安装一下
  • 默认安装路径
    • 不指定安装位置就会由作者决定安装在哪里
    • 不一定都是在下面的目录下
    • image.png
  • 启动服务

    • rpm包安装的大部分都可以使用service来启动
      • service 服务名称 start|stop|restart|status
    • 也可以使用
      • systemctl restart httpd
    • 还有就是可以找到软件的安装位置
      • /etc/init.d/httpd start|restart|stop

        2、升级

  • rpm -Uvh 包名

    • 升级安装,如果没有安装过,会安装
  • rpm -Fvh 全包名

    • 升级安装,如果没有安装过,则不会安装,必须有旧版本才会升级

      3、卸载

  • rpm -e 包名

    4、查询

  • 查询包

    • rpm -q 包名
      • -q 查询
    • rpm -qa
      • 查询所有包
      • -a 查询所有
    • rpm -qa | grep 包名
      • 查询所有并且搜索是否安装过某个包
  • 查询软件信息
    • 安装的包名
      • rpm -qi 包名
      • -i 查询软件包的信息
    • 查询没有安装的软件包信息
      • rpm -qip 包全名
  • 查询安装位置和文件列表
    • rpm -ql 包名
  • 查询未安装软件包的文件列表和打算安装的位置
    • rpm -qlp 包全名
      • -p 查询没有安装的软件包的信息
  • 查询系统文件属于哪个RPM包
    • rpm -qf 系统文件名
      • -f 查询系统文件属于哪个软件包
  • 查询软件包所依赖的软件包

    • 不常用,会把安装的和没装的都列出来,列出的太多,就没啥意义了
    • rpm -qR 包名
      • -R 查询软件包的依赖性
        • -R 查询软件包的依赖性

          5、验证

  • rpm -V 包名

    • -V 校验指定RPM包中的文件
  • rpm -Vf 系统文件名

    • -Vf 校验某个系统文件是否被修改

      6、提取文件

      2、yum在线安装

      1、yum源位置

  • /etc/yum.repos.d/

    [root@localhost yum.repos.d]# ls /etc/yum.repos.d/
    CentOS-Base.repo       CentOS-Media.repo    CentOS-fasttrack.repo
    CentOS-CR.repo         CentOS-Sources.repo  CentOS-x86_64-kernel.repo
    CentOS-Debuginfo.repo  CentOS-Vault.repo    docker-ce.repo
    
  • 这个目录下有很多yum源配置文件,默认情况下CentOS-Base.repo文件生效。 ```shell [root@iZbp1e7fv9j03792bdhg1qZ yum.repos.d]# cat CentOS-Base.repo.rpmsave

    CentOS-Base.repo

    [BaseOS] name=CentOS-$releasever - Base baseurl=http://mirrors.cloud.aliyuncs.com/$contentdir/$releasever/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[root@iZbp1e7fv9j03792bdhg1qZ yum.repos.d]#


   - [base]:容器名称,一定要放在[]中
   - name:容器说明,可以自己随便写
   - mirrorlist:镜像说明,可以自己随便写
   - baseurl:我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢,则可以改成你喜欢的yum源地址
   - enabled:此容器是否生效,enabled=1表示此容器生效,0表示不生效
   - gpgcheck:1则表示RPM的数字证书生效;如果为0则表示RPM的数字证书不生效
   - gpgkey:数字证书的公钥文件保存位置。不用修改
<a name="U65FN"></a>
#### 2、yum 查询

- yum list [包名]
- yum search [包名]
<a name="V38qK"></a>
#### 3、安装

- yum -y install 包名
   - -y 自动帮回答yes
<a name="Smr7K"></a>
#### 4、升级

- yum -y update 包名
- yum -y update
   - 升级本机所有软件包,内核也会升级,请慎重使用
<a name="m3V6o"></a>
#### 5、卸载

- yum remove 包名
   - 卸载的时候别用-y
   - 因为装是装的该软件包和包下所有依赖
   - 但是卸载是卸载当前软件包的上级包。并不卸载自己包的依赖
<a name="SCB7j"></a>
#### 6、软件组命令

- 查询
   - yum grouplist
- 查询软件组内信息
   - yum groupinfo 软件组名
- 安装
   - yum groupinstall 软件组名
- 卸载
   - yum groupremove 软件组名
<a name="Hqidk"></a>
## 2、源码包安装
<a name="rd34I"></a>
### 1、安装
<a name="tvUtn"></a>
#### 1、前置环境

- 进入源码包,查看是否有命令configure
- 可以在源码包中查看一个文件INSTALL这个是安装文档
- ./configure
   - 生成Makefile文件
      - ./configure --prefix=安装路径
- 编译
   - make
- 安装
   - make install
      - 如果报错需要删除安装目录。
- 清理
   - make clean
- 删除
   - 直接删除安装目录
<a name="jviVH"></a>
## 3、脚本程序安装
<a name="KCqWa"></a>
# 2、用户
<a name="s3xXO"></a>
# 3、Shell
<a name="nxhHZ"></a>
## 1、什么是shell
<a name="wKzzr"></a>
## 2、echo

- 打印内容
   - 选项
      - -e 支持反斜线控制的字符转换(参考下表)
      - -n 取消输出后行末的换行符号(就是内容输出后不换行)
   - ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633238767212-870a0b7d-6983-496b-af31-cb99210a1e52.png#clientId=u6a17a38b-fc22-4&from=paste&height=237&id=u58260d0d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=474&originWidth=910&originalType=binary&ratio=1&size=152209&status=done&style=none&taskId=ua44e6aca-076c-470f-b924-263752e0c55&width=455)
<a name="mrrWA"></a>
## 3、Shell脚本的执行

- 相对路径运行
   - ./hello.sh
- 绝对路径运行
   - /root/sh/hello.sh
- 通过Bash调用脚本
   - bash hello.sh
<a name="pW45H"></a>
## 4、Bash基本功能
<a name="B0Tge"></a>
### 1、历史命令

- history [选项] [历史命令保存文件]
   - 选项
      - -c 清空历史命令
      - -w 把缓存中的历史命令写入历史命令保存文件
         - 默认历史命令保存文件
            - ~/.bash_history
   - vi /etc/profile
      - HISTSIZE=1000 保存了.bash_history中存储多少条历史命令
<a name="JV9fi"></a>
### 2、命令别名

- 查询别名列表
   - alias
- 设置别名
   - alias 别名='原命令'
- 别名永久生效
   - 写入~/.bashrc文件中
- 命令的执行优先级
   - (1)执行用绝对路径或相对路径执行的命令
   - (2)执行别名
   - (3)Bash的内部命令
   - (4)按照$PATH环境变量定义的目录查找顺序找到的第一个命令
<a name="hTdMQ"></a>
### 3、Bash常用快捷键
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633239274191-1fd32731-97ad-47e2-abae-2119c689d7bf.png#clientId=u6a17a38b-fc22-4&from=paste&height=199&id=ufaf2abdb&margin=%5Bobject%20Object%5D&name=image.png&originHeight=398&originWidth=886&originalType=binary&ratio=1&size=125215&status=done&style=none&taskId=u3259189a-a4b2-49ce-a157-bc638c2b022&width=443)![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633239281660-13cd3a3b-03db-4c73-964e-c5c50f7fa668.png#clientId=u6a17a38b-fc22-4&from=paste&height=85&id=u113f5dc0&margin=%5Bobject%20Object%5D&name=image.png&originHeight=170&originWidth=886&originalType=binary&ratio=1&size=40742&status=done&style=none&taskId=u14f78ead-09ee-4cb2-a5b8-adb836e51aa&width=443)
<a name="Kh3sQ"></a>
### 4、输入输出重定向
<a name="fOvIA"></a>
#### 1、Bash的标准输入输出
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633239315271-8c2cb02e-0f45-4342-b4c7-f829d1d313f9.png#clientId=u6a17a38b-fc22-4&from=paste&height=69&id=u6afd5358&margin=%5Bobject%20Object%5D&name=image.png&originHeight=138&originWidth=884&originalType=binary&ratio=1&size=36055&status=done&style=none&taskId=uc0b0a428-1b0f-4ba1-bf71-036edf1820f&width=442)
<a name="Rjzx2"></a>
#### 2、输出重定向

- 一般使用
   - 命令 >> 文件 2>&1

![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633239333783-bb183134-90b7-469a-b503-4beccc86d76e.png#clientId=u6a17a38b-fc22-4&from=paste&height=314&id=u335c78df&margin=%5Bobject%20Object%5D&name=image.png&originHeight=628&originWidth=884&originalType=binary&ratio=1&size=219326&status=done&style=none&taskId=u97fc09e5-c8e9-4e5d-b683-3f491bf1639&width=442)
<a name="g8iKV"></a>
#### 3、输入重定向
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633239398405-4493a297-d085-4187-b174-8cdab7177517.png#clientId=u6a17a38b-fc22-4&from=paste&height=83&id=u5a84f708&margin=%5Bobject%20Object%5D&name=image.png&originHeight=166&originWidth=972&originalType=binary&ratio=1&size=35294&status=done&style=none&taskId=u8ddadbc3-27c5-4f21-8863-991a320c715&width=486)
<a name="cZPi5"></a>
### 5、多命令顺序执行
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633239435578-730ff411-4c76-432f-a233-56e50fa25ab7.png#clientId=u6a17a38b-fc22-4&from=paste&height=101&id=u49ddb48f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=202&originWidth=888&originalType=binary&ratio=1&size=69726&status=done&style=none&taskId=u7905336b-11b1-4758-bdee-7d0db906aa8&width=444)
<a name="UH1YD"></a>
### 6、管道符
<a name="qHMdV"></a>
#### 1、行提取命令grep

- grep [选项] "搜索内容" 文件名

![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633239501169-636a52e7-13ec-4cee-8734-fc83f7cedfa2.png#clientId=u6a17a38b-fc22-4&from=paste&height=128&id=u812a10d7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=256&originWidth=606&originalType=binary&ratio=1&size=51547&status=done&style=none&taskId=u498024ed-95c4-41fc-a2bb-7422e8edd38&width=303)
<a name="AxS1x"></a>
### 7、Bash中其他特殊符号
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1633243433116-dd12a971-4106-454b-9261-7b7a9cc7892c.png#clientId=u6a17a38b-fc22-4&from=paste&height=283&id=u614f12dc&margin=%5Bobject%20Object%5D&name=image.png&originHeight=566&originWidth=890&originalType=binary&ratio=1&size=199340&status=done&style=none&taskId=u5edab1b6-317c-460b-9801-665af6eb8d7&width=445)
<a name="iW0EE"></a>
### 8、Bash的变量
<a name="J1UJW"></a>
#### 1、什么是变量

- 变量名称由字符、数字和下划线组成,不能以数字开头
- 变量的默认类型都是字符串,如果要进行数字运算符,则必须制定变量类型为数值类型
- 变量用等号连接值,等号左右两侧不能有空格
- 增加变量的值
   - test=123
   - test="$test"456
   - echo $test
<a name="S067o"></a>
#### 2、变量分类

- 用户自定义变量
- 环境变量
   - 用户自定义环境变量
   - 系统自带环境变量
- 位置参数变量
- 预定义变量
   - 是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的
| 变量分类 | 名称 | 作用 | 内容 |
| --- | --- | --- | --- |
| 用户自定义变量 | 自定义 | 自定义 | 自定义 |
| 用户自定义环境变量 | 自定义 | 自定义 | 自定义 |
| 系统自带环境变量 | 确定 | 确定 | 自定义 |
| 位置参数变量 | 确定 | 确定 | 自定义 |
| 预定义变量 | 确定 | 确定 | 自定义 |

<a name="FN1l5"></a>
#### 3、用户自定义变量

- 变量定义
   - name=shen chao
- 变量调用
   - echo $name
- 变量查看
   - set 命令
      - 选项    
         - -u 如果设定此选项,调用未声明变量时会报错
         - -x 如果设定此选项,在命令执行之前,会把命令先输出一次
- 变量删除
   - unset 变量名
<a name="cQf5C"></a>
#### 4、环境变量

- 环境变量设置
   - export age="18"
- 环境变量查询和删除
   - 删除
      - unset age
   - 查询可以用 env和set
      - set命令可以查看所有变量
      - env命令只能查看环境变量
- PATH变量:
   - 系统查找命令的路径
   - 用:分割的路径
- PS1变量
   - 命令提示符设置
```shell
[root@localhost sh]# echo $PS1
[\u@\h \W]\$
  • 支持的选项
    • image.png
      • LANG语系变量
  • echo $LANG
  • 查看所有语系
    • locale -a | more
    • locale -a | wc -l

      5、位置参数变量

      image.png

      6、预定义变量

      image.pngimage.png

      7、接收键盘输入

  • read [选项] [变量名]
  • 选项
    • -p 提示信息
    • -t 秒数,默认会一直等,加了该参数就指定等待时间
    • -n 字符数,接收到了指定的字符数就直接执行
    • -s 隐藏输入的数据。
  • 变量名

    • 变量名可以自定义,如果不指定变量名,会把输入保存入默认变量REPLY
    • 如果值提供了一个变量名,则整个输入行赋予该变量
    • 如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字

      9、Shell的运算符

      1、declare声明变量类型

      image.png
  • 数值运算

    • image.png
  • 数组变量类型
    • image.png
  • 只读属性
    • 只要设置了这个变量就不能修改了。
  • 查询变量属性和取消变量属性

    • 取消用+
    • image.png

      2、数值运算

  • $((运算式))

    • (推荐用这种)
  • image.png
  • 支持的运算符

    • image.png
    • image.png

      3、变量的测试与内容置换

      image.png

      10、环境变量配置文件

      1、source命令

  • 用来加载配置文件

    • source 配置文件
    • . 配置文件

      2、环境变量配置文件

  • image.png

  • 调用过程
    • image.png

      3、注销时生效的环境变量配置文件

      image.png

      4、shell编程

      1、正则

      2、字符截取和替换命令