嵌入式学习——Linux

一、操作系统基础

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

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 "文件名"

  2. grep:匹配打印文件中符合字符串的行

    grep "字符串" 文件名

4. 通配符

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

示例: file_*.txt、file_??.txt、file_[1,3,5].txt、file_[1‑5].txt、file_[^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"

  2. 重定向

  • >:覆盖重定向

  • >>:追加重定向

    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. 环境变量 :PWD、HOME、PATH
  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
相关推荐
by2099916 分钟前
从结构体到对象:正式学习C++类的骨架、封装与this指针
c++·经验分享·学习
梦帮科技18 分钟前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
乌暮29 分钟前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
向成科技1 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
逐流人1 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
海宇服务1 小时前
零信任架构实战:基于海宇车型识别精准构建自动化定损网关
运维·人工智能·架构·自动化
Fcy6481 小时前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
小雪崩1 小时前
嵌入式学习 day60:ARM汇编——触摸屏与SPI
汇编·arm开发·学习
g10565591392 小时前
公有云_云运维服务
java·运维·服务器
码农小韩2 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论