Linux软件编程
·
Linux软件编程与Shell脚本编程
一、操作系统基础
操作系统本质一套软件,向下屏蔽硬件差异,向上给应用程序提供统一接口,实现软件跨硬件运行。
主流PC操作系统:Unix、Linux、Windows。
Linux:源自GNU项目,C语言编写,广泛用于服务器、嵌入式设备。
Linux内核五大核心能力
- 内存管理:内存分配、回收、虚拟内存。
- 多任务调度:CPU时间片分配,进程调度。
- 文件系统管理:Linux一切皆文件,设备、套接字都抽象成文件。
- 进程间通信:进程之间数据交互。
- 网络通信:网络协议栈。
内核是纯C实现,用户程序不能直接访问内核。用户通过系统调用进入内核;shell作为命令解释器,封装系统调用给使用者操作。
库函数 vs 系统调用
- 系统调用:内核提供接口,操作系统专属,功能强大,开销大。
- 库函数:对系统调用做封装,可移植,上层应用优先使用库函数。
二、Shell基础命令
Shell是命令解释器,接收用户输入命令,调用内核完成工作。
文件目录基础命令
- ls:查看目录, ls -l 详细信息, ls -a 显示隐藏文件。
文件类型标识: ‑ 普通文件, d 目录, l 软链接, b 块设备, c 字符设备。 - touch:新建空文件
- rm:删除文件; rm -rf 强制递归删除目录,高危命令
- mkdir:创建目录;rmdir:仅删除空目录
- cp:复制文件/目录;复制目录需要加 ‑r
- mv:移动、重命名文件
文件查看命令
- cat:一次性输出全部内容
- more/less:分页浏览大文件
- head/tail:查看文件头部、尾部; tail -n 指定行数
文件查找
- find:在目录树遍历查找文件
- grep:文本检索,匹配字符串,输出匹配行
通配符
- 匹配任意字符; ? 匹配单个字符; [] 匹配指定范围字符,用于批量匹配文件名。
压缩解压
tar工具,常用参数: ‑zcvf 压缩; ‑zxvf 解压。
管道与重定向
- 管道 | :把前一条命令输出,当做后一条命令输入。示例: ps -ef | grep bash
- 重定向: > 覆盖输出; >> 追加输出,把命令输出保存进文件。
常用工具命令
- echo:打印输出文本
- history:查看历史执行命令
- du:统计文件、目录磁盘占用大小
- date:查看系统时间
- uname:查看系统内核版本
- ping:网络连通测试
- dpkg/apt:软件包安装卸载管理
三、Shell脚本编程
Shell脚本本质:把多条shell命令写到文件,批量执行。
Shell脚本运行完整流程
- vim编写脚本文件,第一行声明解释器 #!/bin/bash
- chmod +x xxx.sh 添加可执行权限
- ./xxx.sh 执行脚本
坑点: #!/bin/bash 写错字符脚本直接报错; [ ] 做条件判断,中括号内侧两边必须留空格,空格缺失直接报语法错误。
Shell变量
- 环境变量:系统全局变量,如PATH、HOME。
- 位置变量: $0 脚本名; $1 $2 传入脚本参数; $# 参数个数。
- 自定义变量: 变量名=值 ,等号两边不能有空格。
引号区别
- 双引号:解析里面的变量;
- 单引号:原样输出,不解析变量。
输入输出
- read:读取终端用户输入。
分支语句
- if条件分支: if 条件;then … else … fi
- case多分支:匹配不同分支执行对应逻辑。
重点总结
- Linux内核不允许用户直接访问,程序依靠系统调用完成内核操作;库函数封装系统调用,可移植性更好。
- Shell命令高频坑:rm‑rf高危;通配符批量处理;管道和重定向实现命令组合。
- Shell脚本三大高频踩坑:第一行解释器写错;if判断 [ ] 缺少空格;变量赋值 = 两边不能空格。
- read读取输入,if、case完成分支判断,是shell脚本作业的核心。
- shell脚本适合轻量自动化;不适合大规模复杂业务。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)