前言
本帖基于 Ubuntu 64 位虚拟机整理,面向嵌入式 Linux 入门学习者,汇总终端常用快捷键、系统目录结构、Linux 基础文件命令、权限管理、Vim 编辑器操作、GCC 编译流程、ARM 交叉编译等实操内容。重点服务虚拟机下 C 语言程序开发与嵌入式前期环境调试,记录日常高频指令、易错点与规范要求,方便快速查阅、上机练习。笔记同时标注新手常见踩坑问题,适合反复复习,作为上机实验速查手册。
一、终端快捷键
窗口与字体
Ctrl + Alt + T调出终端Ctrl + Shift + '+'放大终端字体Ctrl + '-'缩小终端字体Ctrl + Shift + T新建终端 Tab 标签页- Tab/PageUp、Tab/PageDown 切换多个 Tab 标签
复制粘贴
Ctrl + Shift + C复制Ctrl + Shift + V粘贴
命令行快捷操作
- ↑ ↓ 上下翻阅历史输入命令
Tab自动补齐命令、路径、文件名;连续按两次 Tab 列出所有匹配选项Ctrl + A光标跳转至行首Ctrl + E光标跳转至行尾Ctrl + U清空当前整行输入Ctrl + L等价于clear清屏Ctrl + C终止当前正在运行的程序Ctrl + Z暂停程序至后台,fg恢复前台运行Ctrl + R反向搜索历史命令clear清屏,清空当前终端输出
小提示:Terminal 菜单栏 New Tab / New Window 可实现多窗口、分页同时操作
二、系统目录结构
/根目录,所有文件起点~用户家目录,例:/home/linux/bin普通用户常用二进制命令程序/sbin管理员使用的系统二进制程序/opt大型第三方软件安装目录(交叉编译器、Qt 等)/etc系统各类配置文件/lib系统共享库文件/home所有普通用户家目录存放位置/mnt手动挂载外设目录/media系统自动挂载 U 盘、光盘等移动设备/dev设备文件(硬盘、串口、U 盘等硬件抽象文件)/var日志文件、缓存数据/rootroot 管理员专属家目录/boot系统启动相关文件/proc虚拟目录,存放进程、CPU、内存实时信息/tmp临时目录,系统重启自动清空
路径概念
- 绝对路径:从根目录
/开始书写,例:/home/linux/test.c - 相对路径:不以
/开头,基于当前工作目录;.当前目录、..上一级目录
三、Linux 基础命令格式
通用格式:命令 [参数] [文件/路径][]代表内容可选
1. 目录浏览 ls
ls显示当前路径下所有文件名称ls -l显示文件详细权限、大小、时间信息ls -a显示所有文件,包含.开头隐藏文件ls -lh人性化单位展示文件大小(KB/MB)ls -ld 目录名只查看目录自身信息,不展开内部文件ls -R递归列出所有子目录内容
2. 切换目录 cd
cd /切换至根目录cd 路径切换到指定工作路径cd ..返回上一级目录cd ~返回当前用户家目录(/home/linux)cd -快速切换回上一次所在目录
3. 查看当前路径 pwd
pwd(print work directory):打印当前工作路径
4. 创建文件 / 文件夹
touch 文件名创建普通空文件(.c/.txt);也可修改文件时间戳 示例:touch Desktop/file1.txtmkdir 目录名创建单层文件夹mkdir -p 2026/0721递归创建多级目录
⚠️重点:不加
-p,上级目录不存在时命令会报错
批量创建多个目录:mkdir dir1 dir2 dir3
5. 删除文件 / 文件夹
⚠️重要提醒:Linux rm 删除无回收站,谨慎操作!
rm 文件名删除普通文件rm 文件1 文件2批量删除多个文件rm -r 文件夹删除文件夹(递归)rm -rf 目标强制递归删除,高危命令!禁止执行rm -rf /rm -i 文件名删除前交互式确认rmdir仅能删除空目录
6. 文件查看
cat 文件名一次性输出文件全部内容,适合小文件less 文件名分页浏览,支持上下箭头滚动,q退出(推荐)more 文件名简易分页查看head -n 10 test.c查看文件前 10 行tail -n 20 test.c查看文件末尾 20 行;tail -f实时跟踪日志
7. 复制 cp
cp 源文件 目标路径/目标文件名cp -r 源文件夹 目标文件夹复制目录(必须加-r递归)cp -i覆盖文件前提示确认
8. 移动 / 重命名 mv
mv 源文件 目标文件同目录下等价重命名mv 源文件 目标文件夹剪切移动文件mv 源文件夹 目标文件夹剪切移动文件夹
9. 权限管理 chmod
权限规则:r=4,w=2,x=1权限字符串共 10 位:
第 1 位:文件类型(-普通文件、d目录、l软链接)
2~4 位:文件属主权限
5~7 位:同组用户权限
8~10 位:其他用户权限
示例:chmod 0777 文件名
答疑:权限数字为八进制编码,规范书写需要前缀
0区分进制;十六进制前缀为0x。
配套命令:chown 用户:组 文件修改文件所有者(需要 sudo)
10. 磁盘空间查看
df -h查看系统各个分区挂载与磁盘占用du -h 目标查看文件 / 文件夹占用空间大小du -h --max-depth=1 /home/linux限制递归深度为 1 级du -sh *查看当前目录下所有文件总大小
11. 帮助手册
man 命令名查看命令官方手册
12. 权限提升 sudo
普通用户无法修改系统目录(/根目录、/etc等),命令前加sudo临时获取管理员权限
sudo 命令单次提权执行sudo -i直接切换为 root 管理员(提示符#)
输入密码时终端不显示任何字符,属于正常现象
13. 可执行文件运行
./a.out
前提:文件拥有可执行权限,权限不足执行
chmod +x a.out
14. 用户切换相关
$:普通用户提示符#:root 超级管理员提示符
四、U 盘挂载(嵌入式开发常用)
预设挂载路径:/mnt/udisk,图片、音视频资源存放位置
sudo mkdir -p /mnt/udisk sudo mount /dev/sdb1 /mnt/udisk # 使用完毕必须卸载再拔盘,防止文件损坏 sudo umount /mnt/udisk五、Vim 编辑器(C 语言代码编写)
文件后缀必须为.c
三大模式
- 普通模式(默认,Esc 进入):复制、剪切、跳转、撤销
- 插入模式:编写代码
- 底行模式(普通模式按
:):保存、退出、全局设置
切换插入模式
i:光标前插入a:光标后插入o:光标下方新建一行插入I:当前行首插入A:当前行尾插入O:光标上方新建一行插入
普通模式常用操作
u撤销Ctrl + r反撤销gg跳转文件首行G跳转文件末尾;15G直接跳转到第 15 行nyy复制光标向下 n 行;yy复制当前一行ndd剪切光标向下 n 行;dd剪切当前一行p粘贴到光标下一行;P粘贴到光标上一行
底行模式常用指令
:%d清空全文所有内容:set nu显示行号(:set nonu关闭行号)gg=G一键格式化全部代码缩进:/关键词向下搜索文本,n下一处,N上一处:%s/旧文本/新文本/g全文批量替换
保存 & 退出
:w仅保存:q仅退出(无修改才能退出):wq/:x保存并退出:w!强制保存(只读文件):q!强制放弃修改退出:wq!强制保存并退出只读文件
六、GCC 编译器与 C 语言开发流程
编译四阶段:预处理 → 编译 → 汇编 → 链接
- 预处理:展开头文件、宏替换
gcc -E test.c -o test.i - 编译:生成汇编代码
gcc -S test.i -o test.s - 汇编:生成目标文件
.ogcc -c test.s -o test.o - 链接:整合系统库,生成可执行程序
基础编译命令:
gcc test.c # 默认生成 a.out gcc test.c -o app # 自定义可执行程序名称 ./app # 运行程序 # 多文件联合编译 gcc main.c func.c -o app编译参数拓展
-I路径:指定头文件搜索目录-L路径:指定库文件搜索目录-l库名:链接指定库
七、ARM 交叉编译
arm-linux-gcc test.c -o arm_app
生成 ARM 架构可执行程序,不能在 Ubuntu 虚拟机直接运行,需要下载到 ARM 开发板执行。
八、C 语言代码编写规范
- 头文件、main 函数顶格对齐;
{}内部代码统一缩进,Linux 环境 1 个 Tab = 8 个空格;- 成对符号
() {} ""一次性写完,避免遗漏; - 功能模块之间空一行,提升可读性;
- if/for/while 即便只有一行代码,也要加上大括号;
- 运算符两侧添加空格,逗号后添加空格;
九、补充实用检索 / 打包命令
grep "关键词" test.c在文件内检索指定字符串find . -name "*.c"递归查找当前目录下所有 C 文件- 压缩:
tar -zcvf code.tar.gz ./code - 解压:
tar -zxvf code.tar.gz - Ubuntu 安装软件:
sudo apt install 软件名
总结
这份笔记覆盖嵌入式入门阶段 Ubuntu 虚拟机最核心的实操内容:终端操作、Linux 文件系统命令、权限机制、Vim 代码编辑、GCC 编译与 ARM 交叉编译,支撑基础 C 语言开发与开发板前期调试工作。 Linux 系统严格区分大小写,删除、修改系统文件等高风险操作务必谨慎,养成操作前确认路径、文件名称的习惯;学会善用 Tab 补全、man 手册、历史命令提高上机效率。后续学习可以在此基础上拓展 Shell 脚本、进程、IO 操作、Makefile 工程管理等内容,逐步过渡到嵌入式 Linux 应用开发。