一、操作系统基础

操作系统本质上是一款软件,作用是屏蔽底层各式各样的硬件平台,向上层应用提供统一接口,以此实现通用软件代码。

PC端三大操作系统:

  1. Unix:世界上第一款操作系统
  2. Linux:遵循GNU(GNU's Not Unix),使用C语言编写;广泛应用于服务器、嵌入式场景
  3. Windows:由C/C++开发

二、Linux操作系统

1. Linux内核五大核心功能

  • 内存管理
  • 多任务调度
  • 文件系统的管理:Linux系统理念一切皆是文件
  • 多任务间的通信
  • 网络通信

2. Linux内核特点

  1. Linux内核是由系统调用组成的纯C代码
  2. 内核不允许和用户直接交互
  3. 内核功能复杂,直接调用难度大,因此借助shell编写命令实现内核功能,shell也就是命令解释器。

3. shell的作用

  1. 保护内核
  2. 作为命令解释器,接收用户命令,对接内核

4. 库函数

  1. 库函数是对系统调用的封装,用来处理复杂的应用场景。
  2. 系统调用是Linux内核提供的函数接口,仅可在Linux系统下使用,功能强大,但接口简练。
  3. 库函数具备可移植性,通用性更强。

三、Shell 基础命令

1. 文件目录基础命令

  1. ls  
    ls -l 查看详细信息 
    ls -a 显示全部文件,包含隐藏文件

Linux 七种文件类型:

  • b:block 块设备文件
  • c:character 字符设备文件
  • d:directory 目录文件
  • -:普通文件
  • l:link 链接文件
  • s:socket 套接字文件
  • p:pipe 管道文件
  1. touch:创建文件
  2. rm:删除文件
  3. mkdir:创建文件夹
  4. rmdir:删除空文件夹
  5. rm -rf:删除非空文件夹
  6. cp:拷贝文件;拷贝目录需要加 -r 参数
  7. mv:移动文件

2. 文件查看命令

  • cat filename:直接查看文件全部内容
  • more / less:分页查看文件
  • head / tail:查看文件头部 / 尾部内容 示例:head/tail -n 行数 文件名

3. 文件查找

  1. find:在目录下查找文件路径
find . -name "文件名"
  1. grep:匹配打印文件中符合字符串的行
grep "字符串" 文件名

4. 通配符

  • *:匹配任意长度、任意字符的文件名
  • ?:匹配一位长度、任意字符的文件名
  • []:匹配一位长度,指定字符的文件名

示例: file_*.txtfile_??.txtfile_[1,3,5].txtfile_[1‑5].txtfile_[^6].txt

5. 压缩解压 tar

压缩

tar -zcvf filename.tar.gz dirname/*
tar -jcvf filename.tar.bz2 dirname/*

解压

tar -zxvf filename.tar.gz
tar -jxvf filename.tar.bz2

6. 组合命令

  1. 管道 |:把前面命令输出,作为后面命令输入
ps -ef | grep "bash"
  1. 重定向
  • >:覆盖重定向
  • >>:追加重定向
ps -ef > file.txt

练习示例:

tail -n 200 /usr/include/stdio.h | grep "extern" > file.txt

7. 其余常用命令

  • echo:将内容输出显示在终端
  • history:查看终端历史输入命令
  • du:查看文件大小 du -m / du -k 文件名 / 目录名
  • od:按指定格式查看文件内容 od -c file.txt
  • date:查看系统时间、日期
  • uname -a:查看内核版本、平台架构
  • ifconfig:查看网卡信息
  • ping:测试主机和目标 IP 网络连通性

8. 软件包工具

dpkg 工具集(本地 deb 包)
  1. 安装软件:sudo dpkg -i 软件包名.deb
  2. 卸载软件:sudo dpkg -P 软件名
  3. 检查是否安装成功:dpkg -l 软件名
apt‑get 工具集

使用前提:网络是可用的,配置软件源

  1. 下载安装:sudo apt‑get install 软件名
  2. 卸载软件:sudo apt‑get remove 软件名 --purge

四、Shell 编程

编译型语言 vs 解释型语言

编译型语言

  1. 拥有丰富的数据类型
  2. 先编译,后执行
  3. 执行速度快
  4. 开发效率偏低
  5. 适合数据运算处理

解释型语言(Shell 属于此类)

  1. 全部内容视作字符串
  2. 边翻译边执行
  3. 执行速度慢
  4. 开发效率高
  5. 适合系统开发维护

Shell 脚本编写运行步骤

  1. 编写脚本:vim filename.sh
  2. 添加执行权限:chmod +x filename.sh
  3. 运行脚本:./filename.sh

Shell 脚本本质:多条 shell 命令的集合。

Shell 变量

  1. 环境变量PWDHOMEPATH
  2. 位置变量
  • $0:脚本文件名
  • $1 $2 $3 $4:传入脚本的参数
  • $#:传入参数总个数
  • $$:脚本运行进程 ID
  • $?:上一条 shell 语句执行返回结果
  1. 自定义变量变量名=值

Shell 中的引号

  1. 双引号:会解析替换里面变量的值
  2. 单引号:原样输出内容,不解析变量
  3. 倒引号:把引号内部内容当作命令执行

Shell 脚本输入输出

  • echo:输出
  • read:接收终端输入

分支语句

if 语句

if 判断条件
then

else

fi

case 分支语句

case 变量名 in
    值1)语句
        ;;
    值2)语句
        ;;
    值3)语句
        ;;
    *)语句
        ;;
esac
Logo

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

更多推荐