3、Linux操作系统基础:Linux简介、常用命令、文件权限管理、vim编辑器基础
好,咱们正式开始接触Linux。说实话,很多刚入行的朋友一听到Linux就觉得头大,觉得那是大神才玩的东西。其实真不是这样。我当年第一次接触Linux,是在一个嵌入式项目里,老板扔给我一块开发板,说「你把它跑起来」。我盯着黑乎乎的终端,连怎么关机都不知道……嗯,后来硬着头皮啃了三天,发现这东西一旦上手,比Windows顺手多了。
为什么嵌入式开发离不开Linux?你想想看,从路由器到智能手表,从无人机到游戏掌机,底层跑的基本都是Linux。它开源、稳定、资源占用小,而且你能看到每一行代码。说白了,搞嵌入式不会Linux,就像开车不会挂挡——也能走,但总差点意思。
3.1 Linux简介:它到底是什么?
Linux本质上是一个操作系统内核。我们平时说的「Ubuntu」「Debian」「CentOS」,其实都是在Linux内核上套了一层外壳(发行版)。对于掌机开发,我个人推荐用Ubuntu或者Debian,社区活跃,遇到问题一搜就有答案。
Linux的设计哲学很简单:一切皆文件。你的键盘是文件,屏幕是文件,甚至CPU和内存的状态也是文件。这种设计让系统变得非常统一——你学会操作文件,就等于学会了操作整个系统。
3.2 常用命令:你的瑞士军刀
命令是Linux的魂。别怕记不住,常用的就那么十来个。我用了十年,每天高频使用的也不超过20个。下面这几个,你必须刻进肌肉记忆里。
3.2.1 ls —— 看看目录里有什么
ls # 列出当前目录的文件
ls -l # 详细列表(权限、大小、日期)
ls -a # 显示隐藏文件(以.开头的文件)
ls -lh # 人性化显示大小(K、M、G)
我习惯用 ls -lh,一眼就能看出哪个文件占地方。有一次排查掌机存储空间不足,就是靠这个命令发现了一个巨大的日志文件。
3.2.2 cd —— 在目录间穿梭
cd /home/user # 绝对路径跳转
cd .. # 返回上一级
cd ~ # 回到家目录
cd - # 返回上一次所在的目录
cd - 这个用法很实用。我在两个目录间来回切换编译代码时,全靠它省时间。
3.2.3 mkdir —— 创建目录
mkdir my_project
mkdir -p a/b/c/d # 递归创建多级目录
-p 参数是个好东西。你不需要先建a,再建b,再建c。一条命令搞定。
3.2.4 rm —— 删除(小心!)
rm file.txt # 删除文件
rm -r my_folder # 删除目录(递归)
rm -f file.txt # 强制删除,不提示
rm -rf / 的变体,差点把整个系统删了。记住:rm 没有回收站,删了就真没了。尤其是 rm -rf,用之前一定确认路径。
3.2.5 cp —— 复制
cp source.txt dest.txt # 复制文件
cp -r source_folder dest_folder # 复制整个目录
cp -i source.txt dest.txt # 覆盖前先询问
我写脚本时经常用 cp -i,防止手滑覆盖了重要配置文件。
3.2.6 mv —— 移动或重命名
mv old.txt new.txt # 重命名
mv file.txt /tmp/ # 移动到/tmp目录
mv 其实干了两件事:改名和搬家。在嵌入式开发中,我常用它来替换固件版本——先把旧固件mv成备份,再把新固件mv过来。
3.3 文件权限管理:别让不该看的人看了
Linux是多用户系统,权限管理是安全的基础。你想想看,如果谁都能改系统文件,那不乱套了?
用 ls -l 看文件,第一列就是权限信息,比如:
-rwxr-xr-- 1 user group 1024 Mar 15 10:00 my_script.sh
这串字符分成四段:
| 位置 | 含义 | 示例 |
|---|---|---|
| 第1位 | 文件类型(-普通文件,d目录,l链接) | - |
| 第2-4位 | 文件所有者(user)的权限 | rwx(读、写、执行) |
| 第5-7位 | 所属组(group)的权限 | r-x(读、执行) |
| 第8-10位 | 其他人(others)的权限 | r--(只读) |
修改权限用 chmod 命令。有两种方式:
# 符号方式
chmod u+x my_script.sh # 给所有者加执行权限
chmod g-w my_script.sh # 给组去掉写权限
chmod o=r my_script.sh # 其他人只能读
# 数字方式(r=4, w=2, x=1)
chmod 755 my_script.sh # 所有者:7(4+2+1), 组:5(4+1), 其他人:5
chmod 644 my_script.sh # 所有者:6(4+2), 组:4, 其他人:4
实用经验: 在嵌入式开发中,可执行文件通常用755,配置文件用644。脚本文件别忘了加执行权限(chmod +x),不然系统会告诉你「Permission denied」——我第一次遇到这个错误时,愣是查了半天才反应过来。
3.4 vim编辑器基础:终端里的神兵利器
说到vim,很多人又爱又恨。爱的是它效率极高,恨的是学习曲线陡峭。我刚开始用vim时,连退出都不会,只能关终端重开……后来才知道要按 :q!。
vim有三种模式,这是理解它的关键:
| 模式 | 作用 | 如何进入 |
|---|---|---|
| 普通模式 | 移动光标、复制粘贴、删除 | 启动vim时默认 |
| 插入模式 | 输入文字 | 按 i |
| 命令模式 | 保存、退出、搜索替换 | 按 : |
你只需要记住这几个操作,就能应付90%的场景:
# 打开文件
vim my_file.c
# 进入插入模式(开始写代码)
i
# 退出插入模式回到普通模式
Esc
# 保存并退出
:wq
# 不保存强制退出
:q!
# 在普通模式下复制一行
yy
# 粘贴
p
# 删除一行
dd
# 撤销
u
# 搜索某个词
/关键词 然后按 n 跳到下一个
我的习惯: 在嵌入式开发中,我经常用vim同时打开多个文件:vim -O file1.c file2.c 可以分屏显示。用 Ctrl+w 加方向键切换窗口,效率非常高。
说实话,vim不需要一开始就学得很深。你只要会打开文件、编辑、保存退出,就能干活了。其他的快捷键,用到一个学一个,慢慢就熟练了。我到现在也记不住所有快捷键,但常用的那几个闭着眼睛都能敲出来。
好了,这一章的内容就是这些。Linux命令这东西,光看没用,你得在终端里敲。找个虚拟机或者拿块开发板,把今天学的命令挨个试一遍。遇到报错别慌——我当年报的错比你多得多,每个错误都是学习的机会。