1. 1. 一、UNIX操作系统
    1. 1.1. 1.历史简介
    2. 1.2. 2.标准化
    3. 1.3. 3.其他的UNIX系统
      1. 1.3.1. 1> Linux
        1. 1.3.1.1. 背景
          1. 1.3.1.1.1. 「两个人」:
          2. 1.3.1.1.2. 「四个一」:
        2. 1.3.1.2. Linux的诞生
      2. 1.3.2. 2> UNIX操作系统概要
        1. 1.3.2.0.1. 「相关概念」
        2. 1.3.2.0.2. 「特征」
  • 2. 二、Linux入门
    1. 2.1. 1.登录系统
      1. 2.1.1. 「登录作用」
      2. 2.1.2. 「登录方式」
      3. 2.1.3. 「命令提示符」
      4. 2.1.4. 「修改口令」
      5. 2.1.5. 「退出系统」
    2. 2.2. 2.命令
      1. 2.2.1. 「命令格式」
        1. 2.2.1.1. 基本格式
        2. 2.2.1.2. 不同流派
      2. 2.2.2. 「日期和时间的显示」
      3. 2.2.3. 「用户信息」
      4. 2.2.4. 「终端」
      5. 2.2.5. 「常用其他命令」
        1. 2.2.5.1. who am i和whoami命令
        2. 2.2.5.2. 显示日历 cal命令
        3. 2.2.5.3. help命令 man命令 info命令
        4. 2.2.5.4. last命令
        5. 2.2.5.5. history
      6. 2.2.6. 「命令行快捷键与命令补齐」
    3. 2.3. 3.shell
    4. 2.4. 4.软件的安装与卸载
      1. 2.4.0.1. 「安装软件」
  • 2.5. 5.登录过程
    1. 2.5.1. 启动过程
  • 3. 三、vi编辑器
    1. 3.0.1. 1.工作模式
      1. 3.0.1.1. 「命令模式」
      2. 3.0.1.2. 「末行模式」
      3. 3.0.1.3. 「文本输入模式」
      4. 3.0.1.4. 「模式切换」
    2. 3.0.2. 2.基本操作
    3. 3.0.3. 「打开或创建文件」
    4. 3.0.4. 「编辑文件」
    5. 3.0.5. 「保存文件与退出」
    6. 3.0.6. 「存储缓冲区」
    7. 3.0.7. 「光标的移动」
    8. 3.0.8. 3.定制vi
    9. 3.0.9. 「选项格式」
    10. 3.0.10. 「vim配置文件」
    11. 3.0.11. 4.搜索替换与命令执行
      1. 3.0.11.1. 「搜索」
      2. 3.0.11.2. 「搜索并替换」
      3. 3.0.11.3. 「运行shell命令」
  • 4. 四、Linux文件系统
    1. 4.1. 1.磁盘组织
    2. 4.2. 2.文件类型
    3. 4.3. 3.目录详述
      1. 4.3.1. 「重要目录作用」
      2. 4.3.2. 「主目录」
      3. 4.3.3. 「工作目录」
      4. 4.3.4. 「路径」
      5. 4.3.5. 「特殊符号」
      6. 4.3.6. 「命名约束」
    4. 4.4. 4.目录操作命令
      1. 4.4.1. 「cd命令」
      2. 4.4.2. 「mkdir命令」
      3. 4.4.3. 「rmdir命令」
      4. 4.4.4. 「ls命令」
      5. 4.4.5. 「cat命令」
      6. 4.4.6. 「rm命令」
  • 5. 五、UNIX文件系统高级操作
    1. 5.1. 1.shell重定向
      1. 5.1.1. 「输出重定向」
      2. 5.1.2. 「输入重定向」
    2. 5.2. 2.文件操作命令
      1. 5.2.1. 「cat命令」
      2. 5.2.2. 「cp命令」
      3. 5.2.3. 「mv命令」
      4. 5.2.4. 「ln 命令」
    3. 5.3. 3.文件名替换
    4. 5.4. 4.其它文件操作命令
      1. 5.4.1. 「find命令」
      2. 5.4.2. 「head命令」
      3. 5.4.3. 「tail命令」
      4. 5.4.4. 「cut命令」
      5. 5.4.5. 「paste命令」
      6. 5.4.6. 「more命令」
      7. 5.4.7. 「less命令」
    5. 5.5. 5.UNIX 内部:文件系统
  • 6. 六、探索shell
    1. 6.1. 1.启动shell
    2. 6.2. 2.shell的主要功能
      1. 6.2.1. 「正则表达式」
      2. 6.2.2. 「echo命令」
      3. 6.2.3. 「消除元字符的特殊含义」
    3. 6.3. 3.shell变量
      1. 6.3.1. 「显示和清除变量:set和unset」
      2. 6.3.2. 「给变量赋值」
      3. 6.3.3. 「显示shell变量的值」
      4. 6.3.4. 「shell的标准变量」
    4. 6.4. 4.其他元字符
      1. 6.4.1. 「执行命令:使用重音符号 ` 」
      2. 6.4.2. 「命令序列:使用分号 ; 」
      3. 6.4.3. 「命令编组:使用括号 ( )」
      4. 6.4.4. 「后台处理:使用 & 符号」
      5. 6.4.5. 「链接命令:使用管道操作符 | 」
    5. 6.5. 5.其他UNIX系统工具
      1. 6.5.1. 「sleep命令」
      2. 6.5.2. 「ps 命令」
      3. 6.5.3. 「kill命令」
      4. 6.5.4. 「tee命令」
      5. 6.5.5. 「grep命令」
      6. 6.5.6. 「sort命令」
    6. 6.6. 6.启动文件
      1. 6.6.1. 「shell环境配置文件」
      2. 6.6.2. 「登录shell与非登录shell」
      3. 6.6.3. 「配置文件功能」
      4. 6.6.4. 「alias命令」
    7. 6.7. 7.UNIX进程管理
  • 7. 七、程序开发
    1. 7.1. 1.程序的编辑、翻译与执行
      1. 7.1.1. 「建立可执行程序的步骤」
      2. 7.1.2. 「编译/解释程序」
    2. 7.2. 2.编译、链接C/C++程序
      1. 7.2.1. 「gcc / g++ 执行编译的步骤」
      2. 7.2.2. 「gcc / g++编译程序」
    3. 7.3. 3.重定向程序输出与出错信息
    4. 7.4. 4.make工具(看不懂原理)
  • 8. 八、shell编程
    1. 8.1. 1.UNIX shell编程语言简介
      1. 8.1.1. 「退出shell的方法」
      2. 8.1.2. 「执行脚本」
    2. 8.2. 2.编程基础
      1. 8.2.1. 「命令置换 ``命令」
      2. 8.2.2. 「读取输入 read命令」
      3. 8.2.3. 「自定义变量」
      4. 8.2.4. 「清除变量」:
      5. 8.2.5. 「显示变量值」:
      6. 8.2.6. 「命令行参数」:
      7. 8.2.7. 「set 命令」
      8. 8.2.8. 「exit」
    3. 8.3. 3.条件与测试语句
      1. 8.3.1. 「if-then」
      2. 8.3.2. 「if-then-else」
      3. 8.3.3. 「test」
    4. 8.4. 4.算术运算
      1. 8.4.1. 「expr 」
      2. 8.4.2. 「let」
    5. 8.5. 5.循环
      1. 8.5.1. 「for」
      2. 8.5.2. 「while循环」
  • 9. 九、系统管理
    1. 9.1. 1.文件系统管理
      1. 9.1.1. 「fdisk 命令」
      2. 9.1.2. 「mkfs」
      3. 9.1.3. 「mount」
      4. 9.1.4. 「df」
      5. 9.1.5. 「du」
    2. 9.2. 2.存档和压缩文件
      1. 9.2.1. 「tar」
  • Linux课程复习笔记

    声明:本篇文章参考和引用了2023下半年吉林大学郭东老师的PPT,如有侵权,请联系我,我将会立马删除

    一、UNIX操作系统

    1.历史简介

    1969年诞生于AT&T贝尔试验室

    开发者是Ken Thompson 和 Dennis Ritchie

    最初使用汇编语言开发,后用C语言重写UNIX源码,UNIX和C完美地结合成一个统一的整体

    UNIX以源代码的形式发行,形成了两个重要的流派:
    UNIX SYSTEM V (AT&T)和 Berkeley UNIX(UCB)

    2.标准化

    即对每种实现必须定义的各种限制进行说明

    有两个重要的UNXI标准:

    1. 系统V接口定义 SVID 例如: at&t
    2. 可移植操作系统接口 POSIX 例如:IEEE、 ISO

    3.其他的UNIX系统

    1> Linux

    目前应用最为广泛的类UNIX系统

    背景

    「两个人」:

    Richard Stallman和 Linus Torvalds,前者启动GNU项目 创建FSF组织 提出copyleft理念 制订GPL协议 发起开源运动

    「四个一」
    • 一个项目 GNU

    GNU’s NOT UNIX

    目标

    ​ 创建一个自有共享 可以被任何人修改的类UNIX操作系统

    ​ 与UNIX系统兼容

    ​ 不受UNIX名字和源代码私有权限制

    ​ 能运行UNIX程序

    ​ GNU项目完成了许多UNIX系统上应用程序的仿制品

    ​ GNU项目开发的重要软件工具有:

    ​ GCC:GNU编译器套件,包括GNU c编译器

    ​ G++:C++编译器 是GCC的一部分

    ​ GDB:源代码级的调试器,支持多种语言

    ​ GNU make: UNUX make命令的免费版本

    ​ bash: 命令解释器(shell)

    ​ GNU Emacs : 文本编辑器及环境

    未成功开发操纵系统内核

    • 一个组织 FSF

      自由软件基金会

      目标:
      执行GNU计划

      ​ 提供技术 法律以及财政支持

      ​ 开发更多的自有软件

    • 一个理念 Copyleft

    • 一个许可证 GPL

      背景:
      发行大型软件需要的合适许可协议

      已经有的许可协议:

      image-20231125202333757

      Copyright©:版权所有,即软件的一切权利归软件作者私有,用户只有使用权没有其他权利包括复制软件的权利

    ​ Richard Stallman提出Copyleft的概念(著权)

    image-20231125202957871

    利用现有的著作体制来保护所有用户和二次开发者的自由授权方式

    它赋予所有人运行程序,复制程序,修改程序和发行修改程序的权限,但是使用者不能在修改后的软件上添加限制

    ​ 基于copyleft Stallman提出来了GPL许可证,GNU通用的公共许可证

    GPL授予程序接受人以下权利,或称“自由”:

    • 赋予所有人运行程序,复制程序,修改程序和发行修改程序的自有
    • 重新发行软件的人不能在修改后的软件上添加限制

    GNU开发的工具都在GPL下发行

    意义:
    image-20231125203240445

    其他开源许可证:
    Apache ,BSD,MIT,Mozilla

    image-20231125203426215

    Linux的诞生

    内核在GPL协议下发布,参与了开源运动,Linux内核更新速度极其快

    吉祥物:tux

    image-20231125203724965

    Linux的含义:操作系统内核或者是基于linux内核的操作系统

    Linux操作系统版本:包括内核版本和发行版本

    [内核版本]:有Linux内核社区统一进行发布,包括主版本号 次版本号和修订次数,奇数表示开发版本,偶数表示稳定版本,修订次数标明内核被修改的次数

    image-20231125204046584

    「发行版本」 发行版的名称或版本号是由发行版的维护者决定

    image-20231125204139444

    image-20231125204157090

    2> UNIX操作系统概要

    计算机系统= 硬件+系统软件+应用软件

    UNIX操作系统是包含了文本编辑器 编译器 和其他系统工具程序的程序集

    UNIX操作系统是按照分层软件模型实现的

    image-20231125204400373

    内核:

    image-20231125204440090

    image-20231125204501355

    image-20231125204515488

    image-20231125204551016

    「相关概念」

    虚拟计算机:UNIX向系统中每个用户指定一个执行环境,这个环境称为虚拟计算机,包括一个用户接口终端和共享的其他计算机资源,UNIX是多用户操作系统 虚拟计算机的集合,而从用户视角是独想计算机

    进程:UNUX系统通过进程向用户分配资源

    「特征」

    可移植性(c语言保证)

    多用户性:多用户同时共同使用计算机,各个用户执行不同的程序,提供安全机制隔离用户

    多任务性:启动一个任务后继续执行其他任务,允许用户在前台和后台多个任务之间进行切换

    分级文件系统:对数据和程序文件进行分组管理,便于查找文件和程序

    与设备独立的输入输出操作:

    用户界面shell:

    ​ 命令解释器: 控制用户与系统的交互,实现用户命令输入与结果输出

    ​ shell脚本: UNIX Shell是一种成熟的编程语言,Shell 脚本 包含一系列命令, 实现较为复杂 的功能

    系统工具与服务:UNIX系统包括100多个系统工具程序(命令),标准的UNIX系统组成部分完成用户所需要的各种功能

    二、Linux入门

    1.登录系统

    「登录作用」

    1. UNIX是一个多用户操作系统。
    2. 用户在使用UNIX系统前必须进行登录

    「登录方式」

    1. 本地登录:在本地输入用户名和密码登录
    2. 远程登录:使用远程登录软件登录 eg: ssh

    「命令提示符」

    最简单的命令提示符只有一个字符,一般root根用户是#,普通用户是$,用户可以设置提示符,显示丰富系统信息。

    image-20231128105235339

    普通用户

    「修改口令」

    passwd命令来修改或创建口令

    1.可以修改自己的口令:

    image-20231128105425593

    2.修改别人的口令

    1
    passwd username

    只有root可以

    3.创建口令

    1
    passwd username

    应用场景:root创建普通用户后,为其分配初始口令

    「退出系统」

    用户完成工作后离开系统的过程,退出意味着和系统断开连接结束对话

    三种方法:

    1
    2
    3
    exit
    [Ctrl-d]
    logout

    logout需要在登录shell中

    2.命令

    • UNIX系统有几百条命令/系统工具
    • 绝大多数命令格式相同
    • 大部分UNIX提供在线帮助 help man info
    • 通过输入命令告诉系统要做什么事
    • 命令行中回车键解释为命令行的结束符

    例子:
    image-20231128110218045

    「命令格式」

    基本格式

    image-20231128110252691

    image-20231128110324019

    命令本身 和 命令+选项

    1
    2
    3
    4
    5
    6
    7
    8
    #命令+选项
    ls -a #显示目录中的隐藏文件
    ls -a -l #将隐含的文件用长格式形式显示
    ls -la #作用同上,写法不同
    #命令+参数
    ls /home #显示指定目录的文件
    #命令+选项+参数
    ls -a /home #命令+选项+参数

    image-20231128110819617

    image-20231128111034774

    不同流派

    image-20231128111303688

    image-20231128111426160

    image-20231128111413828

    image-20231128111346324

    image-20231128111534508

    「日期和时间的显示」

    1
    date

    image-20231128111633306

    UNIX使用24小时制

    「用户信息」

    who命令

    1
    who

    image-20231128111741085

    第一列:登录用户名,登录用户名

    第二列:登录终端号,登录到哪里

    第三列:登录时间

    第四列:登录主机,从哪里登录的

    「终端」

    物理终端:一套输入输出设备,用于用户登录和使用计算机,如连接在计算机上的显示器,鼠标,键盘与名词主机对应

    虚拟终端(tty)

    本地的linux系统提供的,例如虚拟机或者是linux系统服务器之类的,

    image-20231128112152987

    image-20231128112440981

    虚拟机登录

    使用虚拟机登录终端为tty

    capture_20231128142808500

    对于Ununtu图形化界面

    image-20231128151721044

    伪终端(pty)

    远程登录软件或终端模拟软件模拟出的终端

    image-20231128141759139

    image-20231128141823390

    手机软件远程登录

    「常用其他命令」

    who am i和whoami命令

    1
    2
    who am i
    who am I

    显示终端上登录的用户信息

    image-20231128152126549

    1
    whoami

    显示用户名

    image-20231128153157246

    显示日历 cal命令

    默认显示当月日历

    image-20231128152807363

    参数中可以指定年和月,显示指定年月的日历表

    help命令 man命令 info命令

    「内部命令」 shell代码中的一部分,shell启动后驻留内存,执行速度快

    「外部命令」保存在文件系统中的程序,被调用时才载入内存执行

    image-20231128154054687

    image-20231128154113516

    image-20231128154124919

    image-20231128154138497

    image-20231128154231499

    last命令

    1
    last

    它用来展示关于系统用户最后登录会话的信息

    capture_20231128153410861

    输出的每一行从左到右包含的列分别是:

    • 用户名。 当系统重启或者关闭时,last显示指定用户为reboot或者shutdown
    • 会话占用的 tty。:0通常意味着用户登录了一个桌面环境
    • IP 地址或者用户登录的主机名
    • 会话开始时间和停止时间
    • 会话时长。如果会话仍然是激活的,或者用户没有登出,last 将会显示信息,而不是时长

    history

    显示输入的所有命令记录

    1
    history

    image-20231128153900626

    「命令行快捷键与命令补齐」

    image-20231128154332308

    3.shell

    image-20231128154719823

    image-20231128154736510

    image-20231129211049340

    image-20231129211156849

    image-20231129211302220

    4.软件的安装与卸载

    「安装软件」

    1.两种方法

    • 下载软件源代码后编译安装

    • 基于网络存储库安装/更新软件

      两种基于网络存储库的软件安装方法:

      1.yum后继为dnf eg:Redhat OpenEluer

      2.apt eg:Ubuntu Debian

    2.使用yum(dnf)安装软件包

    image-20231129211838221

    软件包集合:服务于一个共同的目的一组软件包,例如系统工具集等

    使用dnf可以对软件包组进行安装和删除等操作,使相关操作更高效

    image-20231129212018114

    5.登录过程

    启动过程

    操作系统常驻部分载入内存其余部分保留在磁盘上,用户请求时候再载入内存,用户登录时 shell程序载入内存。

    [init进程]:UNIX系统所有进程的祖先进程,启动所有系统服务和后台进程,系统启动后init创建虚拟终端为用户登录做准备

    三、vi编辑器

    工具软件,文本编辑器,用于创建新文件或修改旧文本文件,编辑对象是文本文件,相对简化的字处理器

    image-20231129213205077

    1.工作模式

    「命令模式」

    启动后默认进入,所有的输入都被看作命令,不显示,被执行,通过按键删除字 行 段落,移动光标或者执行其他操作

    「末行模式」

    按下冒号,在最后一行输入命令,回车结束命令

    「文本输入模式」

    键盘输入文本字符,屏幕显示用户输入

    「模式切换」

    image-20231129213525501

    注意大小写和英文字符

    2.基本操作

    「打开或创建文件」

    1
    2
    3
    vi     #在当前工作目录新建一个文件并打开

    vi myfirst #存在myfirst文件则为打开文件,不存在则新建并打开

    image-20231129213840486

    image-20231129213850965

    「编辑文件」

    • 按下小写字母 i 进入文本输入模式
    • 通过键盘进行输入文本
    • 按下 BackSpace或者Ctrl+h删除字符
    • 每行结束后按Enter进入下一行

    「保存文件与退出」

    按下ESC退出文本编辑模式进入命令模式,输入

    1
    2
    3
    :wq
    :x
    ZZ

    上述三种的其中一种,按下回车即为保存并退出

    1
    :q

    若文件没被修改即为退出,已经被修改未保存则无法退出

    1
    :q!

    不保存文件直接退出

    「存储缓冲区」

    image-20231129214521276

    「光标的移动」

    命令模式下

    image-20231129214614398

    命令模式进入文本输入模式不同的命令键有不同的效果:

    image-20231129214707433

    光标移动键(命令模式)

    image-20231129215354489

    精准定位

    命令模式:

    image-20231129215414056

    末行模式:

    image-20231129215526241

    翻页:

    image-20231129215624206

    文件修改:

    命令模式下:

    image-20231130144409680

    删除字符:

    1
    2
    3
    4
    5
    6
    7
    8
    #删除单个字符
    x
    #数字n+x删除n个字符
    2x
    #撤销当前行的修改
    U
    #撤销最近的修改
    u

    删除行和单词

    1
    2
    3
    4
    5
    6
    #删除光标所在行
    dd
    #数字n+dd删除n行
    2dd#删除两行
    #删除光标所在单词
    dw

    重复上一次操作

    1
    .

    替换字符

    image-20231130145148593

    载入文本

    从其他文件中载入文本内容

    1
    2
    :r 文件名
    #指定文本副本插入当前文件光标的下一行
    1
    2
    :a,b w file
    #把文件的a到b行写到file中

    文件重排:

    image-20231130150229039

    1
    2
    3
    4
    #复制当前行
    yy
    #删除当前行
    dd

    使用操作符和域控制键修改/重排文本

    image-20231130152354930

    3.定制vi

    image-20231130152759807

    「选项格式」

    image-20231130152856213

    1
    2
    3
    4
    #只显示修改过的选项
    :set
    #显示X的值
    :set X?

    例如:

    1
    2
    3
    4
    #显示行号
    :set nu
    #取消显示行号
    :set nonu

    「vim配置文件」

    1
    2
    ~/.exrc
    ~/.vimrc

    vi编辑器中使用命令设置的所有选项都是临时的,退出vi就会失效

    在用户主目录创建 ~/.exrc 或 ~/.vimrc 配置文件,设置选项后,可使每次启动时选项保持不变

    4.搜索替换与命令执行

    「搜索」

    1
    2
    3
    4
    #命令模式下输入
    /+要搜索的字符即为从光标所在的位置查找字符
    #例如:
    /A

    按下N是下一个匹配与命令搜索方向相反,按下n为下一个匹配,与命令搜索方向相同

    「搜索并替换」

    1
    2
    :「行范围」 s/被替换单词/新单词/[g]
    #g是全行替换,行范围默认为当前行

    image-20231202185736902

    「运行shell命令」

    1
    2
    3
    4
    #: ! command
    : ! date
    #将命令执行结果加到文本中:
    :r! command

    四、Linux文件系统

    1.磁盘组织

    目录:Linux文件系统的组织单元

    Linux文件系统通过目录对文件进行组织管理,

    2.文件类型

    UNIX文件视角:

    • 文件是字节序列,一切都是文件
    • 文件可以分为,普通文件、目录文件、特殊文件
    1
    2
    #查看文件类型
    file 文件名

    image-20231202191624635

    image-20231202191641349

    3.目录详述

    目录结构以层次结构进行组织

    image-20231202191741582

    父子关系:相邻两层目录间的关系

    上层目录是下层目录的父目录,下层目录是上层目录的子目录

    image-20231202191842230

    重要目录:Linux系统的标准目录

    image-20231202192035623

    「重要目录作用」

    image-20231202192347215

    image-20231202192539500

    image-20231202192558821

    image-20231202192723221

    「主目录」

    主目录:管理员在创建用户的时候为其分配的特定目录

    • 用户登录时,自动进入主目录
    • 用户在其主目录拥有读、写和执行权限
    • 用户在其主目录可以创建任意多的子目录
    • 主目录名字通常和用户名相同

    「工作目录」

    工作目录:用户先在在文件系统中的目录

    1
    2
    pwd
    #查看目前的工作目录

    「路径」

    路径:文件在文件系统中的位置描述方式

    路径名用来定义文件。

    绝对路径:从根目录开始到文件的路径

    image-20231202193349892

    相对路径:从当前目录开始到达文件的路径

    image-20231202193359114

    「特殊符号」

    点(.):表示当前目录

    点点(…):表示当前目录的父目录

    「命名约束」

    文件和目录如何命名。

    image-20231202193529448

    4.目录操作命令

    「cd命令」

    1
    2
    cd [目录名]
    #改变工作目录

    image-20231202193744996

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cd
    #返回用户主目录
    cd .
    #进入当前目录
    cd ..
    #进入上一级目录
    cd ~
    #进入当前用户的主目录
    cd ~tux
    #进入tux主目录,前提是你有权限进入

    「mkdir命令」

    1
    2
    3
    4
    mkdir 目录名
    #创建目录
    mkdir 目录名1 目录名2 目录名3
    #创建多个目录

    image-20231202194116992

    1
    2
    #一次创建多层目录
    mkdir -p xx/yy/zz

    「rmdir命令」

    1
    2
    #删除目录,只能删除空目录,即目录中只含有.和..
    rmdir 「目录名」

    「ls命令」

    1
    2
    #显示指定目录内容
    ls 「目录名」

    image-20231202194341628

    选项 -l:

    image-20231202194434138

    image-20231202194520579

    第二列:文件的链接数

    第三列:文件的所有者,通常与文件创建者用户名相同,文件的所有者发生转移,则两者不同

    第四列:文件所属的组,管理员创建用户时,指定用户隶属于某个组,用户创建文件时,文件属于用户默认隶属的组

    第五列:文件大小,单位字节

    第六列:文件上一次修改的日期和时间

    第七列:文件的名称

    选项 -a:
    查看隐藏文件

    image-20231202194822252

    「cat命令」

    1
    2
    #显示一个或多个文件的内容
    cat 文件名1 文件名2

    image-20231202194922602

    「rm命令」

    1
    2
    #删除文件
    rm 文件名

    image-20231202194955122

    image-20231202195022506

    五、UNIX文件系统高级操作

    1.shell重定向

    image-20231202195437195

    「输出重定向」

    输出重定向允许用户将命令(进程)的输出保存到文件中

    shell使用>和>>作为输出重定向操作符

    1
    2
    command > filename #覆盖重定向
    command >> filename #追加重定向

    image-20231202200457240

    「输入重定向」

    输入重定向允许用户从指定文件得到输入来运行命令

    image-20231202200542587

    shell使用<和 <<作为输出重定向操作符

    1
    2
    comand < filename #命令行中使用
    command << 分界符#脚本编程中使用

    2.文件操作命令

    「cat命令」

    image-20231202200855618

    1
    2
    cat filename #命令参数
    cat < filename #输入重定向

    image-20231202200950422

    1
    cat > filename #使用cat和输出重定向可以创建文件

    image-20231202201039530

    1
    cat >> filename # 若文件不存在则会创建文件并将键盘输入内容输入到文件中,如存在则追加输入
    1
    2
    cat filename > filename.copy #复制文件
    cat filename1 filename2 > filename.copy #复制多个到一个

    image-20231202201447583

    「cp命令」

    1
    2
    cp 文件名1 文件名2 #创建文件副本
    cp filename1 filename2 目录名 #将一个或多个文件复制到指定目录

    image-20231202201742015

    image-20231202201803414

    image-20231202201823928

    命令选项:

    -i:如果目标文件已经存在要求确认

    image-20231202201932935

    -r:将目录复制到新的目录

    image-20231202202013511

    「mv命令」

    1
    2
    mv 文件名(s) 目录 #将文件移到其他目录(非文件所在目录)
    mv 文件名1 文件名2 #移动并改变文件名

    image-20231202204134259

    image-20231202204154232

    image-20231202204205615

    命令选项:

    -i :如果目标文件已经存在要求确认

    image-20231202204258626

    「ln 命令」

    在已存在和新文件名之间创建链接,为已存在的文件起新名字,使用不同的名字引用同一文件

    • 在不同目录中频繁操作同一文件
    • 在每个目录中建立该文件的链接文件,通过链接文件对原文件进行操作
    • 链接文件不占用过多的磁盘空间

    涉及文件存储的三个部分

    image-20231202204606759

    image-20231203102033260

    image-20231203102140610

    「wc命令」

    1
    2
    3
    4
    5
    6
    #计算一个或者多个文件的行数、字数和字符数
    wc [文件名]
    #无参数默认键盘输入
    wc
    #统计多个文件
    wc [文件名] [文件名]

    image-20231203102458849

    选项:

    -l :统计行数

    -c:统计字符数

    -w:统计字数

    image-20231203102721023

    image-20231203102735066

    3.文件名替换

    image-20231203103037503

    「?通配符」

    代表单个字符,不可为空

    image-20231203103420980

    「*通配符」

    文件名中的任意个字符(包括0个)

    image-20231203103547461

    image-20231203103559206

    「[] 通配符」

    包含括号中指定的任一字符

    image-20231203103837817

    image-20231203103924092

    4.其它文件操作命令

    「find命令」

    在多层目录中搜索指定文件,快速查看文件指定部分

    image-20231203104202314

    image-20231203104329792

    搜索选项:

    image-20231203104352656

    -name : 通过文件名查找文件

    image-20231203104459455

    -type: 通过文件类型查找文件

    image-20231203104629325

    动作选项:

    image-20231203104715277

    -exec:用户给出命令,对找到的文件进行操作

    image-20231203104903043

    -ok:用户执行命令前需要确认

    image-20231203105155036

    「head命令」

    1
    2
    #显示文件头部若干行
    head [filenames] #默认显示前10行

    -n: 显示文件前n行

    image-20231204090519119

    「tail命令」

    1
    2
    #显示文件尾部若干行
    tail [filenames] #默认后10行

    -n : 显示文件后n行

    image-20231204090715118

    「cut命令」

    1
    2
    #从文件中取出指定域或列
    cut 选项 文件名

    -f : 指定域位置 ,1,3,5 1-3,5

    image-20231204091146132

    image-20231204091217513

    -c :指定字符的位置

    image-20231204091313084

    -d :指定域分隔字符

    image-20231204091403924

    「paste命令」

    1
    2
    # 逐行连接两个或多个文件
    paste file1 file2+(s)

    -d:指定具体分隔符,默认为制表符

    image-20231204091627160

    image-20231204091647719

    「more命令」

    1
    2
    #另页查看工具
    more filename

    -lines :每屏显示的行数

    +line-number :从第line-number 行开始显示

    +/pattern : 从包含pattern的行的上两行开始显示

    -c :在显示每页之前清屏

    -d :显示提示[Press space to continue, ‘q’ to quit]

    image-20231204091933287

    「less命令」

    1
    2
    #分页查看工具,允许在文件中向后和向前移动
    less filename

    基于more 和 vi 更高级的工具

    5.UNIX 内部:文件系统

    image-20231204092210032

    image-20231204092224326

    image-20231204092310347

    六、探索shell

    1.启动shell

    用户成功登录系统,shell启动,用户退出,shell进程结束

    系统中每个用户都有一个默认的shell,在系统口令文件/etc/passwd指定

    image-20231204093910980

    image-20231204093928448

    image-20231204094005033

    2.shell的主要功能

    image-20231204094146647

    image-20231204094215586

    「正则表达式」

    image-20231204133415834

    image-20231204133446879

    image-20231204133543972

    例子:

    image-20231204133732850

    POSIX标准正则表达式:

    image-20231204133904964

    扩展正则表达式:仅在部分程序中支持,例如 egrep、awk 等

    image-20231204134201536

    例子:

    image-20231204134254841

    正则表达式与通配符区别:
    image-20231204134330146

    「echo命令」

    1
    2
    #将消息参数显示在用户终端上,没有参数输出空行
    echo message

    image-20231204094319850

    -n :禁止换行,输出后不换行

    image-20231204135140526

    -e :解释反斜杠引导的转义字符(用于控制消息格式的字符,字符串的一部分,以\开始由shell解释为用户想要得到的输出)

    image-20231204094459579

    image-20231204133102241

    image-20231204133128633

    image-20231204135012223

    image-20231204133213407

    「消除元字符的特殊含义」

    元字符:shell中具有特殊含义和用途的字符,在shell中出现时不代表字面含义

    如:
    image-20231204135653676

    消除元字符特殊含义的元字符

    image-20231204135735214

    \ :后面的元字符按照字符的字面量解释

    " " : 取消除$、`、\外元字符的特殊含义。双引号中保留空白字符(空格、制表和换行符等)

    image-20231204140215379

    ’ ’ : 单引号中任何字符都失去特殊含义,单引号中保留空白字符(空格、制表和换行符等)

    image-20231204140531736

    3.shell变量

    • shell为响应用户请求,保存一些信息到shell变量中
    • 变量有名称,可以通过赋值来控制或定制系统环境

    image-20231204140700159

    「显示和清除变量:set和unset」

    1
    2
    #查看当前使用的shell变量(环境变量和局部变量)
    set

    image-20231204140851846

    1
    2
    #删除不需要的变量
    unset

    image-20231204141227863

    赋值时,等号左右无空格

    「给变量赋值」

    image-20231204141317503

    「显示shell变量的值」

    image-20231204141350586

    shell变量可用于在命令行中帮助保存复杂选项或参数

    image-20231204142142961

    「shell的标准变量」

    image-20231204142211346

    标准变量:

    HOME:保存用户主目录;用于其他命令定位主目录

    image-20231204142314306

    PATH : 设置shell载入外部命令(程序)时所要查找的目录

    image-20231204142634082

    路径间的分隔符是 :

    image-20231204143119671

    PS1 : 设置作为命令提示符的字符串

    image-20231204143511681

    image-20231204143529264

    image-20231204143619476

    image-20231204143657006

    PS2 : 多行输入一条命令时,设置第二行及以后行的提示符,默认为>

    image-20231204144200378

    image-20231204144144616

    image-20231204144216316

    SHELL:设置登录的shell的完整路径

    image-20231204144325814

    TERM : 设置终端类型

    image-20231204144401392

    4.其他元字符

    「执行命令:使用重音符号 ` 」

    1
    # `告诉shell先执行重音符号扩起来的命令,结果替换命令行中原来扩起来的命令,也称命令替换符

    image-20231204150134375

    image-20231204150428115

    「命令序列:使用分号 ; 」

    1
    2
    #在一个命令行中分隔多个命令,shell从左到右执行
    ;

    image-20231204150612587

    「命令编组:使用括号 ( )」

    1
    2
    #几个命令放在一对括号中,编为一组执行,编组命令可以被重定向
    ()

    image-20231204150730847

    「后台处理:使用 & 符号」

    UNIX 是多任务系统,允许同时执行多个程序

    image-20231204151039451

    image-20231204151240267

    「链接命令:使用管道操作符 | 」

    | : 将一个命令的标准输出作为另一个命令的标准输入

    image-20231204151409765

    5.其他UNIX系统工具

    「sleep命令」

    sleep:使执行该命令的进程延时指定的秒数

    「ps 命令」

    ps:查看进程详细信息

    image-20231204151807585

    选项:

    -e:显示所有进程
    -f: 显示信息的完整列表(包括完整的命令行)

    「kill命令」

    kill :发信号给指定进程,进行进程间的通信

    image-20231204152126562

    1
    kill [-signal] PID

    image-20231204152231320

    image-20231204152509331

    「tee命令」

    image-20231204152538886

    image-20231204152651165

    image-20231204152757094

    注意:覆盖式输出。

    选项:

    -a : 追加而非覆盖

    「grep命令」

    在一个或多个文件中查找满足特定格式的行

    image-20231204152855243

    image-20231204152908288

    image-20231204152945454

    「sort命令」

    对文件内容按照字母或者数字顺序排序

    image-20231204153040406

    image-20231204153056280

    6.启动文件

    「shell环境配置文件」

    image-20231204153205012

    「登录shell与非登录shell」

    image-20231204153352222

    「配置文件功能」

    image-20231204153421749

    image-20231204153515457

    image-20231204153646249

    image-20231204153736701

    image-20231204153748650

    「alias命令」

    image-20231204153904462

    image-20231204153958644

    7.UNIX进程管理

    image-20231204154021259

    image-20231204154035124

    image-20231204154101766

    image-20231204154119984

    image-20231204154131717

    七、程序开发

    1.程序的编辑、翻译与执行

    「建立可执行程序的步骤」

    1. 编写源文件(源代码)
    2. 建立目标文件(目标代码/目标模块)
    3. 建立可执行文件(可执行代码/载入模块)

    image-20231204160927261

    「编译/解释程序」

    image-20231204161014316

    2.编译、链接C/C++程序

    gcc : GNU C 编译器,Linux通用 C 语言编译器

    g++:GNU C++ 语言编译器

    「gcc / g++ 执行编译的步骤」

    1. 预处理:把头文件展开,去掉注释,宏替换,条件编译等;

      ​ 生成 .i 文件

    2. 编 译:将预处理后的文件转换成汇编语言

      ​ 生成 .s 文件

    3. 汇 编:由汇编语言变为目标代码(机器代码)

      ​ 生成 .o 文件

    4. 链 接:链接目标代码,生成可执行程序

    image-20231204161322195

    「gcc / g++编译程序」

    1
    gcc [选项] 源文件名

    选项:

    -c :只进行预处理、编译和汇编,只生成程序的目标代码文件

    -o : 指定生成的可执行程序名,缺省时候生成的可执行程序名是 a.out ;语法: -o 文件名

    image-20231204161547150

    image-20231204161612641

    3.重定向程序输出与出错信息

    image-20231204161657044

    image-20231204161829042

    4.make工具(看不懂原理

    make工具 : GNU工程化编译工具,用于编译众多相互关联的源代码文件

    image-20231204161934418

    image-20231204161949121

    image-20231204162001606

    image-20231204162333300

    八、shell编程

    1.UNIX shell编程语言简介

    image-20231204163613672

    image-20231204163747359

    image-20231204163848400

    前提条件:

    1. 对于使用sh命令的方法:脚本中的命令要与使用的shell兼容
    2. 对于第二种方法:要先使文件对于用户或所有者具有可执行权限

    image-20231204164023952

    image-20231204164102844

    image-20231204164242380

    image-20231204164437159

    「退出shell的方法」

    1
    2
    exit
    Ctrl -d

    「执行脚本」

    1
    2
    3
    sh program  #不需要执行权限,在子shell中进行,脚本文件需要与所用shell兼容
    ./program #要具有可执行的权限,在子shell中进行
    . program #不需要可执行权限,在当前shell中执行

    image-20231205100059587

    2.编程基础

    「命令置换 ``命令」

    将一个命令的输出作为另一个命令的参数(重音符号)

    1
    `command`

    image-20231205100259221

    「读取输入 read命令」

    从标准输入设备读入字符串存入变量中

    多变量输入:输入中第1个字符串存入第1个变量,第2个字符串存入第2个变量,…,字符串数多于变量数,所有剩余字符存入最后一个变量

    image-20231205100411909

    「自定义变量」

    1
    变量名=变量值
    • shell不支持数据类型,赋给变量的值解释成字符串

    • 变量名遵守与文件命名同样的语法规则

    • 变量可以在shell提示符下定义并使用

    生存周期:变量保存在内存中,直到脚本结束或终止

    「清除变量」:

    1
    unset 变量名

    「显示变量值」:

    1
    echo $变量名

    「命令行参数」:

    又称位置变量,用户输入命令时后面跟的数据项,空格分隔

    1. 参数传递给程序,可以改变程序行为或执行顺序
    2. 按顺序命令行参数被命名为$0、$1、…$9
    3. *命令行参数多于9个,第9个之后的被忽略,但可通过$获得

    image-20231205100834762

    「set 命令」

    给位置变量赋值,set参数依次赋值给位置变量

    image-20231205100950854

    「exit」

    shell内部命令,立即终止程序运行

    1
    exit n
    • n是退出状态,也称返回码
    • 没有提供返回码,使用shell执行最后一条命令的退出值
    • 为与其他UNIX程序/命令完成时返回一个退出状态,保持一致,编写shell脚本,返回给父进程一个退出状态

    3.条件与测试语句

    「if-then」

    image-20231205101350833

    1
    2
    3
    4
    5
    6
    if [ condition ]
    then



    fi

    image-20231205101431498

    「if-then-else」

    image-20231205101530279

    1
    2
    3
    4
    5
    6
    7
    8
    9
    if [ condition ]
    then



    else


    fi

    image-20231205101603297

    「if -then-eif」

    image-20231205101603297

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if [ condition1 ]
    then

    elif [ condition2 ]
    then

    elif [condition3 ]
    then

    else

    fi

    「test」

    内部命令,它计算作为其参数的表达式的真假

    • **真返回0,假返回非0值
    • [ condition ]是test命令的一种特殊写法

    image-20231205103608624

    image-20231205103641272

    判断数值:

    image-20231205103654191

    判断字符串:

    image-20231205103707192

    image-20231205103733801

    image-20231205103751538

    文件检测:

    image-20231205103934119

    image-20231205104022879

    4.算术运算

    「expr 」

    image-20231205104139324

    image-20231205104225736

    image-20231205104242409

    「let」

    image-20231205104313227

    5.循环

    「for」

    image-20231205104412482

    image-20231205104428159

    「while循环」

    九、系统管理

    1.文件系统管理

    image-20231205104731672

    「fdisk 命令」

    image-20231205104812741

    「mkfs」

    image-20231205104853625

    「mount」

    image-20231205104922676

    image-20231205104945923

    「df」

    image-20231205105013868

    「du」

    image-20231205105036834

    2.存档和压缩文件

    「tar」

    image-20231205105131143

    image-20231205105225215

    image-20231205105302202

    image-20231205105317906