[TOC]

CentOS/RHEL命令学习笔记

Linux命令

简单指令

  • history 查看终端执行命令的历史记录

软件包与软件源

软件的安装方式

  • yum 软件包管理器

    • 底层是rpm
    • 自动解决依赖问题
    • 安装完成会自动清理软件包文缓存
    • 安装分为远程安装本地安装

      • 本地yum源 file://本地yum源路径
      • 远程yum源 http://xxx ftp://xxx
    用法:yum [参数] 包名
    参数介绍:
    常用指令参数组合:
        yum install 软件名 安装软件包
        yum repolist 查询yum源信息
        yum install epel-release 增加拓展源
    示例:
        1. yum安装软件包
            yum install 包名
  • rpm 软件包管理器,较少使用

    • 无法自动解决依赖关系,需要手动解决
    • 适用于依赖较少或已知依赖关系的情况

      用法:rpm [参数] 包名
      - 资源路径可以是本地路径,也可以是网络链接
      1. 查找rpm包
      2. wget 网络资源路径
          - wget需要手动安装
      3. 使用 rpm -ivh xxx.rpm 从本地安装
      4. 使用 rpm -ivh url链接 从网络安装(与上面的步骤二选一)
      参数介绍:
      -i 安装
      -v 显示安装信息
      -h 显示安装进度
      -U 安装时检测安装包版本是否最新,如不是则先升级再安装
      -a 查看所有已安装的软件包
      -q 查询所有已安装的软件包
      -l 显示软件包的文件列表
      -e 卸载指定的软件包
      -f 软件包中的文件
      常用指令参数组合:
      -ivh 安装指定软件包并显示进度
      -qa 查询所有已安装的软件包
      -qi 查询软件包的安装信息
      示例:
      5. 查询指定软件包
          rpm -qa | grep 包名
      6. 显示软件包的安装文件
          rpm -ql 包名
      7. 查询某个文件属于哪个软件包
          rpm -qf 软件安装路径 # 只能查看已安装好的软件包
      rpm软件包查找网站:
      - rpm find
          https://www.rpmfind.net/
      - pkgs.org
          https://pkgs.org/
  • 源码安装

CentOS7换源

  • /etc/yum.repos.d 源的存放位置
  • http://mirrors.aliyun.com/repo/Centos-7.repo Ali Mirror
  • https://mirrors.163.com/.help/CentOS7-Base-163.repo wangyi Mirror
  • 备份源

      mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  • 下载Ali Mirror

      curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  • 更新镜像源

      yum clean all # 清理缓存
      yum makecache # 重新建立缓存

系统别名

  • alias 查看系统指令别名
  • alias 别名='实际命令名' 为某个命令起别名
  • type -a 别名 查看指定别名对应的命令
  • unalias 别名 取消某个别名

用户相关

  • whoami 查看当前用户
  • logout 退出当前用户
  • /etc/passwd 保存用户相关信息
  • /etc/group 保存用户组相关信息
  • /etc/shadow 保存用户密码信息

用户

  • 用户

    • UID 用户唯一ID,等同于身份证
    • GID 用户组唯一ID,等同于户口本
    • root用户

      • root账户的UID0
      • root账户的GID0
    • 普通用户

      • UID1000开始,由超级管理员创建
      • 普通用户在被创建时,会在系统中创建一个同名的组(主属组
      • GID
    • 虚拟用户(系统用户)

      • UID 1~999
创建用户
  • useradd 创建用户,默认从1000开始递增(或者从当前最大值开始递增)

    用法:useradd [参数] 用户名
        - 新建用户的同时会自动构建一个属组(组名和用户名一样,主属组)
        - 家目录位于`/home`目录下
    参数介绍:
        -u UID 指定UID,不允许重复值
        -s Shell 指定解释器版本
        -G 组名或GID 指定副属组,副属组需已存在
        -g 组名或GID 指定主属组,主属组需已存在
修改用户
  • ``

    用法: [参数] 用户名
        
    参数介绍:
        
删除用户
  • ``

    用法: [参数] 用户名
        
    参数介绍:
        
查看用户
  • id 查看用户ID信息[uid,uname,gid,副属组]

用户组

  • 用户组 方便管理同一组用户

    • GID 组与组之间区分
    • 用户与组的关系

      • 一对一 一个用户存在一个组里,一个组里只有一个用户
      • 一对多 一个用户可以加入多个组
      • 多对一 多个用户可以加入一个组
      • 多对多 多个用户可以存在多个组中
创建组
  • groupadd 创建组,默认从1000开始递增(或者从当前最大值开始递增)

    用法:groupadd [参数] 组名
    参数介绍:
        -g GID 指定GID,不允许重复值
修改组
  • groupmod 修改组信息

    用法:groupmod [参数] 组名
    参数介绍:
        -g 新UID 修改GID,不允许重复值,不允许小于1000
        -n 新组名 修改组名
删除组
  • groupdel 删除组,需要该组未充当用户的主属组才可以删除

    用法:groupdel 组名
        - 用户的主属组不能删除[创建用户时,会自动分配主属组(主属组和用户名相同)]
        - 若组内存在用户,该组不可删除
    示例:
        1. 创建test组
            groupadd test
        2. 创建demo组并设置gid
             groupadd -g 1002 demo
        3. 将test组的gid修改为1003
             groupmod -g 1003 test
        4. 将demo组的名字修改为DEMO
            groupmod -n DEMO demo
        5. 删除DEMO组
            groupdel DEMO
    练习:
        1. 新建用户组group01
            groupadd group01
        2. 新建用户组group02并指定gid为1111
            groupadd group02 -g 1111
        3. 将group01的组名修改为group11
            groupmod -n group11 group01
        4. 删除用户组group02
            groupdel group02
        5. 基于root用户新建文件/dir2/demo.txt练习vi编辑器指令
        6. 新建用户并指定shell解释器版本为/sbin/nologin
            useradd user01 -s /sbin/nologin
        7. 新建用户并指定主属组为user02副属组为 group11
            useradd user03 -g user02 -G group11

主机相关

  • hostname 查看当前主机名
  • hostnamectl set-hostname 新主机名 修改当前主机名,重启生效

网络相关

  • ip aip addr 查看主机IP地址
  • wget 文件下载器

    - 默认将文件下载到当前目录下
    参数介绍:
        -O 路径 将文件保存到指定路径
  • curl 文件下载器

    参数介绍:
        -o 路径 将文件保存到指定路径

    硬件相关

  • init 0 切换运行级别为0,此级别代表关机
  • init 6 切换运行级别为6,此级别代表重启
  • shutdown -r [参数] 重启

    • shutdown -r 10 10分钟后重启
    • shutdown -r 0 立即重启
    • shutdown -r now 立即重启
  • shutdown -h [参数] 关机

    • shutdown -h 10 10分钟后关机
    • shutdown -h 0 立即关机
    • shutdown -h now 立即关机
  • reboot 重启
  • poweroff 关机,立即关闭系统并切断电源
  • halt 关机,立即关闭系统,但需要手动切断电源

Init等级

    0:停机或者关机(千万不能将initdefault设置为0)
    1:单用户模式,只root用户进行维护
    2:多用户模式,不能使用NFS(Net File System)
    3:完全多用户模式(标准的运行级别)
    4:安全模式
    5:图形化(即图形界面)
    6:重启(千万不要把initdefault设置为6)

时间相关

  • date 查看当前时间

    用法:date '+参数'
    参数介绍:
        %F 只查看当前日期的年月日
        %X 只显示当前时间的时分秒
        %s 从1970年1月1日0时0分0秒到 现在 过了多少秒
        %S 秒
        %c 直接显示日期与时间(年月日 星期 时分秒)
        %x 直接显示日期(年月日)
        %T 显示时分秒   HH:mm:dd[24小时]
        %r 显示时分秒[12小时]
        %p 显示上午还是下午
        %Z 显示时区
        %w 一周中的第几天
        %a 星期几(简写)
        %A 星期几
        %b 月份(简写)
        %B 月份()全称

文件与目录

Linux文件目录组成

/
├── boot 存放系统内核与启动文件
├── dev 存放硬件设备相关信息
├── etc 存放系统配置文件
│   ├── resolv.conf 设置域名解析
│   ├── hostname 设置主机名
│   ├── motd 设置开机提示语
│   ├── os-release 查看发行版和版本号
│   └── sysconfig
│       └── network-scripts
│           └── ifconfig-xxx 设置网络环境,如动态IP等
├── home 普通用户的主目录
├── media 可卸载的存储介质挂载点
├── mnt mount文件的临时挂载点
├── opt 应用程序包的安装目录
├── proc 系统内存的映射目录,提供内核与进程信息
├── root 特权用户目录
├── run 存放组件运行时所需文件[文件夹]
├── srv 存放组件运行时所需文件
├── temp 存放临时文件
├── usr 存放用户程序
└── var 存放运行时内容会改变的文件,如日志等

文件路径

绝对路径
    /文件
    /文件夹/文件
相对路径
    ./    当前目录下
    ../    上级目录下

文件分类

    -:普通文件
    d:目录文件
    l:链接文件
    b:块设备文件
    c:字符设备文件
    p:管道文件
    s:socket套接字文件

权限分类

权限分配所有者所属组其他用户
权限项执行执行执行
字符表示rwxrwxrwx
数字表示421421421

查看文件或目录

  • pwd 查看当前工作目录
  • ls 列出文件夹下内容,隐藏文件默认不展示。

    用法:ls [参数] 路径
    参数介绍:
        -a 列出指定路径下所有内容,包括隐藏文件
        -l 列出指定路径下文件的详细信息
        -h 配合-l使用,查看文件详细大小
        --full-time 查看详细时间
        -t 按照最后一次修改时间降序排序。
        -F 在不同文件结尾输出不同符号,如:
            文件夹后是 /
            可执行文件后是 *
            软链接后是 @
            . 开头的是隐藏文件
            普通文件无后缀
        -d 只列出指定文件夹信息
        -r 逆转排序
        -S 从大到小排序

创建目录

  • mkdir 创建文件夹

    • mkdir /path/{a,b,c} 一次创建指定数量个文件夹
    • mkdir /path/{1..n} 一次创建n个文件夹

      用法:mkdir [参数] 文件夹(包含路径)
      参数介绍:
      -p 递归创建文件夹
      -v 显示详细创建信息

创建文件

  • touch 创建普通文件;修改文件时间

    • touch /path/{file1,file2,file3} 一次创建指定数量个文件
    • touch /path/file{1..n} 一次创建n个文件

      用法:touch [参数] 文件(包含路径)
      参数介绍:
      -t [年月日时分] 修改创建时间为指定的年月日时分
      -r [file1] 将目标文件的创建时间修改为file1相同
      -v 显示详细创建信息
      案例:
      1. 修改filez.png时间为当前系统年份的7月6号16时30分
          touch -t 07061630 filez.png # 年份为空,自动调用系统当前年份
      2. 修改filez.png时间为2025年7月6号16时30分
          touch -t 202507061630 filez.png

复制文件或目录

  • cp 复制文件或文件夹

    用法:cp [参数] 源文件 目标文件
    参数介绍:
        -i 覆盖前询问
        -r 递归复制目录和子文件
        -f 强制执行,不显示提示信息
        -v 显示详细复制信息
        -d 复制的时候保持软链接
        -p 完全复制,包括权限时间戳等与原文件相同
        -a 等价于使用-pdr

移动文件或目录

  • mv 移动文件或目录;重命名文件或目录

    用法:mv [参数] 源文件 目标文件
    参数介绍:
        -i 覆盖前询问
        -f 强制执行,不显示提示信息

删除文件或文件夹

  • rm 删除文件或文件夹

    用法:rm [参数] 文件或目录
    参数介绍:
        -i 删除时询问
        -r 删除目录,不加该参数只能删除文件
        -f 强制执行,不显示提示信息
        -v 显示详细删除信息

文件查看

  • cat 查看文件内容

    用法:cat [参数] 文件
    参数介绍:
        -n 显示行号
        -A 显示标记符号(制表符、换行符等)
  • head 查看文件头部内容,默认是10行

    • head -数字 文件 查看文件头部指定数量行的内容
  • tail 查看文件尾部内容,默认是10行

    用法:tail [参数] 文件
    参数介绍:
        -数字 查看文件尾部指定数字行的内容
        -f 用于动态变化的文件,Ctrl^C退出监测
  • grep 查找、过滤文件内容关键字

    用法:grep '参数' 文件
    参数介绍:
        ^字符串 以字符串开头的行
        字符串$ 以字符串结尾的行
    用例:
        1. 过滤带有root的行
            grep 'root' /etc/passwd
        2. 过滤以root开头的行
            grep '^root' /etc/passwd
        3. 过滤以nologin结尾的行
            grep 'nologin$' /etc/passwd
  • less 分页查看内容比较大的文件,按q退出

    用法:less 文件
    功能说明:
        空格 翻页
        回车键 下一行
        方向键↑↓ 上下滚动
        /关键字 在文件中查找关键字并高亮显示
        n 搜索时上翻
        N 搜索时下翻
  • more 分页查看文件,看完自动退出;窗口底部展示百分比

    用法:more 文件
    功能说明:
        空格 翻页
        回车键 下一行
  • echo 字符串 输出指定字符串,默认输出到当前控制台

文件切割

  • cut 提取文件片段

    用法:cut [参数] 文件
    参数介绍:
        -c 提取指定位置的字符
        -d 符号 指定分隔符符号,默认分隔符是空格
        -f 与-d连用,置顶显示区域,与-c作用类似
    示例:
        1. 提取每行第四个字符
            cut -c 4 /etc/passwd
        2. 提取每行第4~8个字符
            cut -c 4-8 /etc/passwd
        3. 提取每行前8个字符
            cut -c -8 /etc/passwd
            cut -c 1-8 /etc/passwd
        4. 提取每行第8个到末尾的字符
            cut -c 8- /etc/passwd
        5. 提取每行第4、6个字符
            cut -c 4,6 /etc/passwd
        6. 提取每行第1-3、6-8个字符
            cut -c 1-3,6-8 /etc/passwd
        7. 以':'为分隔符切割,保留第1段
            cut -d : -f 1 /etc/passwd
        8. 以':'为分隔符切割,保留第1~3段
            cut -d : -f 1-3 /etc/passwd

文件排序与去重

  • sort 按照制定规则对文件进行排序

    用法:sort [参数] 文件
    参数介绍:
        -b 忽略前导的空白区域
        -n 根据字符串数值比较,默认升序
        -r 反转排序
        -u 去重排序,与-c连用
        -t 分隔符 指定分隔符,默认是空格
        -k [位置1,位置2] 指定某个排序规则的作用域:位置1~位置2
    示例:
        1. 对IP第4段(主机号)进行排序
            sort -n -t '.' -k 4 ./ip.txt
        2. 对1.txt进行升序去重排序
            sort -n -u ./1.txt
    
        1.txt 内容:
            0 a
            1 c
            2 s
            3 a
            4 f
            5 e
            6 g
            0 a
            7 b
            8 h
            9 y
            0 u
            9 j
            7 k
            0 a
            5 i
            4 o
            2 l
            9 y
            1 p
        ip.txt 内容
            192.168.10.1
            192.168.10.20
            192.168.10.15
            192.168.10.2
            192.168.10.3
            192.168.10.5
            192.168.10.2
            192.168.10.3
            192.168.10.7
            202.184.250.20
            138.4.52.61
  • uniq 输出或忽略文件中的重复行,一般与sort连用;只能去除连续的相邻行。

    用法:uniq [参数] 文件
        1.排序排序命令进行排序
        2.使用uniq命令去重或统计
    参数介绍:
        -c 统计每一行的重复次数(连续相邻行)
        -d 统计出现两次及以上的行
        -u 统计只出现一次的行
    示例:
        1. 对sort排序后的输出进行去重
            sort -n ./1.txt | uniq
        2. 对sort排序后的输出进行重复次数统计,统计每一行
            sort -n ./1.txt | uniq -c
        3. 对sort排序后的输出进行统计,只统计重复行
            sort -n ./1.txt | uniq -c -d
        4. 对sort排序后的输出进行统计,只统计重复一次的行
            sort -n ./1.txt | uniq -c -u
        5.查看哪些IP被占用
            sort -n -t '.' -k 4 ./ip.txt | uniq -c -d
        6.查看哪些IP处于空闲状态
            sort -n -t '.' -k 4 ./ip.txt | uniq -c -u

文件编辑

vi的文本模式

  • 工作模式
  • 命令模式 [ESC]

    • 无法编辑
    • 只能查看
  • 编辑模式 [i,a,A,o,O]

    • 可以编辑
    • 可以查看
  • 尾行模式 [:]

    • 保存文件
    • 退出编辑器
  • 可视模式 [ESC,Shift^v,Ctrl^v]

    • 可视块
    • 可视行

    vi模式转换图

  • vi 系统默认的文本文件编辑器
  • vim 高级文本编辑器,编辑器之神

    用法:vi 文件
    功能说明:
        1. 进入编辑模式
            i 在光标处进入编辑模式
            a 在当前光标后面进入编辑模式
            A 在光标所在行的行尾进入编辑模式
            o 在光标下一行进入编辑模式
            O 在光标上一行进入编辑模式
        2. 命令模式
          光标定位:
            方向键 ↑ ↓ ← →
            按键 h(←) j(↓) k(↑) l(→)
            0 回到行首(等同于HOME按键)
            $ 回到行尾(等同于END按键)
            gg 回到页面左上角(文本顶部)
            G 回到页面右下角(文本底部)
            3G 进入第3行 4G(进入第四行)
            /关键字 查找关键字
            n 跳转到下一个搜索结果
            N 跳转到上一个搜索结果
          复制:
            yy 复制当前行
            3yy 从光标处复制3行 5yy(从光标处复制5行)
            ygg 从当前光标复制到页首(区域复制)
            yG 从当前光标复制到页尾(区域复制)
          粘贴:
            p 粘贴剪贴板到本行下方
            P 粘贴剪贴板到本行上方
          删除
            dd 删除光标所在行(向下删除)
            3dd 从光标处向下删除3行 5dd(从光标处向下删除5行)
            dgg 从当前光标删除到页首(区域删除)
            dG 从当前光标删除到页尾(区域删除)
            d^ 删除光标所在位置到行首之间的内容(光标到行首)
            x 删除光标处的内容
            D 删除光标所在位置到行尾之间的内容(光标到行尾)
            u 撤销
          替换:
            r 替换修改光标处的字符
        3. 尾行模式
            : 进入尾行模式
            :3 进入第三行
            :w 保存
            :q 退出
            :q! 强制退出不保存
            :wq 保存并退出
            :wq! 强制保存退出
        4. 可视化模式
            Ctrl^v 可视块模式
            Shift^v 可视行模式
        5. 查找替换
            :s/原内容/新内容/ 替换光标所在行的原内容为新内容,只匹配替换一次
            :3 s/原内容/新内容/ 替换第3行的原内容为新内容,只匹配替换一次
            :1,3 s/原内容/新内容/ 替换第1~3行的原内容为新内容,只匹配替换一次
            :% s/原内容/新内容/ 替换所有行的原内容为新内容,只匹配替换一次
            :% s/原内容/新内容/g 替换所有行的原内容为新内容,全部匹配替换
        6. 设置环境
            :set nu 设置行号
            :set nonu 取消设置行号
            :set list 显示控制字符,可以查看筛选带行尾空格的行
  • emacs 高级文本编辑器,神的编辑器
  • stat 查看文件详细信息(访问和修改时间、属性改变时间)

帮助指令

  • man 查看所有帮助手册
  • 指令 --help 查看指令的用法帮助

RHEL重置root密码

  1. 重启Linux,进入内核选择界面,按下e,进入内核编辑模式
  2. 在启动参数后添加rd.break参数,按下Ctrl^X执行修改过的程序
  3. 等待系统进入救援模式,挂载系统分区。

    mount -o remount,rw /sysroot
    chroot /sysroot
    passwd
    touch /.autorelabel
    exit
    reboot

附件

Linux目录树原始Markdown

+ /
  + boot 存放系统内核与启动文件
  + dev 存放硬件设备相关信息
  + etc 存放系统配置文件
    - resolv.conf 设置域名解析
    - hostname 设置主机名
    - motd 设置开机提示语
    - os-release 查看发行版和版本号
    + sysconfig
      + network-scripts
        - ifconfig-xxx 设置网络环境,如动态IP等
  + home 普通用户的主目录
  + media 可卸载的存储介质挂载点
  + mnt mount文件的临时挂载点
  + opt 应用程序包的安装目录
  + proc 系统内存的映射目录,提供内核与进程信息
  + root 特权用户目录
  + run 存放组件运行时所需文件[文件夹]
  + srv 存放组件运行时所需文件
  + temp 存放临时文件
  + usr 存放用户程序
  + var 存放运行时内容会改变的文件,如日志等