嵌入式学习——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_*.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"

  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. 环境变量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
相关推荐
w01_02_033 小时前
虚拟机, ubuntu , samba
linux·运维·ubuntu
我爱cope3 小时前
【计算机网络 | 网络层4:子网掩码与 CIDR:如何判断网络号和主机号?】
网络·学习·计算机网络
云计算磊哥@3 小时前
运维开发宝典061-CICD_版本控制器git
运维·git·运维开发
渣渣盟3 小时前
Nginx 从零到上手:Windows & Linux 双环境教程
linux·windows·nginx
Dola_Zou3 小时前
CodeMeter Linux 部署与配置指南
linux·运维·自动化·软件加密
java_logo3 小时前
Docker 部署 Piper:轻松搭建本地 TTS 文本转语音平台
运维·docker·容器·语音识别·轩辕镜像·tts 文本转语音·docker部署tts
MSTcheng.3 小时前
【Linux学习】Linux学习第二弹——Linux基本指令1
linux·运维·服务器·学习·指令
今天AI了吗3 小时前
AI 数据安全治理框架:模型能力与数据权限的边界在哪里
java·linux·开发语言·人工智能·python·深度学习·机器学习
不一样的少年_3 小时前
Docker 容器操作:运行、停止、查看与删除
linux·docker·容器
0566463 小时前
python高级——Python 类型提示与 Pydantic
网络·人工智能·windows·python·学习