第一部分:操作系统概述

1. 操作系统定义
操作系统是一款软件,用于屏蔽底层不同的硬件平台,为上层提供统一的接口,实现通用的软件代码能够在不同硬件上运行。

2. 三大主流PC操作系统

· Unix:世界上第一款操作系统
· Linux:遵循GNU协议,使用C语言编写,广泛用于服务器和嵌入式领域
· Windows:使用C/C++编写

3. Linux内核五大功能

· 内存管理
· 多任务调度
· 文件系统的管理(Linux中一切皆文件)
· 多任务间的通信
· 网络通信

4. Linux内核与系统调用

· Linux内核由系统调用组成,是纯C代码,不允许与用户直接交互。
· 内核功能复杂不易直接调用,通过Shell编写一系列命令来完成内核功能,Shell充当命令解释器。

5. Shell的作用

· 保护内核,防止用户直接操作内核引发安全问题
· 作为命令解释器,将用户输入的命令翻译给内核执行

6. 系统调用与库函数的区别

· 系统调用:Linux内核中的函数接口,仅在Linux系统中可用,功能强大但接口简练
· 库函数:对系统调用的封装,可跨平台移植,具有通用性,能处理更复杂的应用场景

第二部分:Shell基础命令

1. 文件类型识别(ls -l 第一列字符)

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

2. 基础操作命令

· touch:创建文件
· rm:删除文件
· mkdir:创建文件夹
· rmdir:删除空文件夹
· rm -rf:删除非空文件夹(递归强制删除)
· cp:拷贝文件,拷贝目录需加 -rf 选项
· mv:移动文件

3. 文件查看命令

· cat:查看文件全部内容
· more/less:分页查看文件内容
· head/tail:查看文件开头或结尾的指定行数,通过 -n 选项指定行数

4. 文件查找命令

· find:在当前目录下查找与文件名匹配的文件路径,通过 -name 选项指定文件名
· grep:在文件中打印所有与指定字符串匹配的行

5. 通配符

· *****:匹配任意长度、任意字符的文件名
· ?:匹配一位长度的任意字符
· []:匹配一位长度的指定字符(如 [1,3,5] 匹配1或3或5)

6. 组合命令

· 管道(|):将前面命令的输出作为后续命令的输入
· 重定向:将命令输出写入文件
  · >:覆盖重定向,清空文件后写入
  · >>:追加重定向,在文件末尾追加

7. 其他常用命令

· echo:输出字符串或变量值
· history:查看历史命令
· du:查看文件或目录大小,-m 以MB为单位,-k 以KB为单位
· od:按指定格式查看文件内容,-c 以字符形式显示
· date:查看系统时间和日期
· uname -a:查看内核版本和平台架构
· ifconfig:查看网卡信息
· ping:测试本机与指定IP地址的网络连通性

8. 软件包管理工具

· dpkg工具集(适用于本地 .deb 包):
  · 安装:sudo dpkg -i 软件包名.deb
  · 卸载:sudo dpkg -P 软件名
  · 查看安装状态:dpkg -l 软件名
· apt-get工具集(适用于在线安装,需联网):
  · 需提前设置软件源
  · 下载并安装:sudo apt-get install 软件名
  · 卸载:sudo apt-get remove 软件名 --purge

第三部分:Shell编程基础

1. 编译型语言与解释型语言对比

· 编译型语言(如C/C++):
  · 有丰富的数据类型
  · 先编译再执行
  · 执行速度快
· 解释型语言(如Shell脚本):
  · 所有内容均为字符串
  · 边解释边执行
  · 执行速度慢
  · 开发效率高,适合系统维护和快速开发

2. Shell脚本编写与执行步骤

· 使用编辑器(如vim)创建 .sh 文件并编写代码
· 为脚本添加执行权限
· 执行脚本

3. Shell脚本本质
Shell脚本本质是一系列Shell命令的集合,按顺序执行。

4. Shell中的变量分类

· 环境变量(系统预定义):
  · PWD:当前工作目录
  · HOME:用户家目录
  · PATH:可执行文件的搜索路径
· 位置变量(脚本运行时传入):
  · $0:脚本文件名
  · $1~$n:传递给脚本的第n个参数
  · $#:传入参数的个数
  · $$:脚本运行时的进程ID号
  · $?:上一条Shell语句的执行结果(0表示成功)
· 自定义变量:由用户自行定义和赋值

5. Shell中的引号

· 双引号:打印时会替换为变量的值(变量展开)
· 单引号:打印时引号中的内容原样不变(不展开变量)
· 倒引号(反引号):将引号内的内容作为命令执行,并替换为命令输出

6. 输入与输出

· echo:输出内容到终端
· read:从终端读取用户输入

7. 分支语句

· if 语句:通过条件判断执行不同分支,以 fi 结尾
· case 语句:根据变量值匹配多个模式,匹配后执行对应语句段,以 esac 结尾

第四部分:关键概念辨析

系统调用 vs 库函数

· 系统调用是内核直接提供的接口,不可移植但功能强大
· 库函数是对系统调用的封装,可移植性好,便于跨平台开发

编译型 vs 解释型语言

· 编译型语言执行效率高,适合性能敏感场景
· 解释型语言开发效率高,适合脚本编程和系统维护

硬链接 vs 软链接(补充概念)

· 硬链接:指向同一个inode,删除原文件不影响链接
· 软链接(符号链接):指向原文件路径,删除原文件则链接失效(ls -l 显示为 l 类型)

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐