第2章 上手 Linux:环境与文件操作
上一章你装好了 Ubuntu,敲下人生第一条命令
uname -a。但只看不动永远学不会------这一章我们真的动手:建文件、复制、搬家、删除,全程在终端里完成。
本章回答什么问题
- Windows 里的 C 盘、D 盘,在 Linux 里去哪儿了?文件到底放在哪?
- 绝对路径和相对路径怎么写?
- 日常文件操作,靠哪几个命令就够了?
- 命令忘了怎么用,怎么自己查?
- 数据存成文件挺好的,为什么后来还要发明数据库?
正文
终端是窗口,bash 是办事员
第 1 章我们装好了 Ubuntu(打开方式见第 1 章:WSL 用户直接在开始菜单里找 Ubuntu 图标)。那个黑乎乎的窗口有个正式名字:终端(Terminal) 。终端本身其实不懂命令,它只负责显示字符;真正听懂你说话的是一个叫 bash 的程序,它是一种外壳(Shell)------还记得上一章说的"内核与外壳"吗?bash 就是那个外壳,替你把话传给内核去干活。
打开终端,你会看到一行提示符:
bash
@ubuntu:~$
从左到右拆开看:`` 是当前用户名,ubuntu 是机器名,~ 是当前位置(马上讲),结尾的 $ 表示"我准备好了,请输入"。如果结尾是 # 而不是 $,说明你现在是超级用户 root------权限大到足以搞坏整个系统,本书除非必要,一律用普通用户。
命令的格式很统一:命令 + 参数 。比如 ls -l /etc:ls 是命令,-l 是选项(改变命令行为的开关),/etc 是操作对象。选项大多以 - 开头。
整个文件系统就是一棵树
在 Windows 里打开"此电脑",你会看到 C:、D:、E: 这些盘符。Linux 没有盘符,整个系统只有一棵树 :最顶端是根目录(Root Directory)/,所有目录都挂在它下面。你插上的硬盘、U 盘,也都会被"挂"到树的某个目录上(这个动作叫挂载,第 7 章细讲)。
打个比方:文件系统像一棵倒着长的档案树 ,根 / 是最上面的总入口,树枝是目录,树叶是文件;路径就是"从入口出发的走法"。这个类比有一处失效:目录里存的其实只是一份"名字 → inode"的清单,并不存放文件内容本身。inode 是什么?第 7 章展开,这里先记住"目录 ≠ 文件内容"就够了。

/ 下面有几个经常打照面的目录,先用 ls / 看一眼混个脸熟:
| 目录 | 大白话 |
|---|---|
/home |
普通用户的"家",一人一间房,比如 /home/albert |
/etc |
系统的各种配置文件 |
/tmp |
临时文件,随时可能被清掉 |
/usr |
你装的大部分软件和命令 |
不用背,后面用着用着就熟了。
路径的两种写法:绝对与相对
指路有两种说法:"从总入口开始走"和"从我现在的位置开始走"。
- 绝对路径(Absolute Path) :从根
/写起,比如/home/albert/lab。不管你此刻在哪,照它走都能到,不会有歧义。家目录有个快捷写法~:~/lab就等于/home/albert/lab(把 albert 换成你的用户名)。 - 相对路径(Relative Path) :从当前目录写起,不以
/开头 。比如你现在在/home/albert,那么lab/notes指的就是/home/albert/lab/notes。还有两个特殊记号:.表示当前目录,..表示上一级目录,所以cd ..是"往上走一层"。
一句话记忆:开头是 /(或 ~)的是绝对路径,其余都是相对路径。
文件命令九件套
日常用得最多的就这 9 个命令,按"看、走、建与读、搬与删"四组来记。
1. 看
pwd(Print Working Directory):我现在在哪?输出当前目录的绝对路径。ls(List):这里有什么?加-l出详细清单,加-a连以.开头的隐藏文件一起显示。
2. 走
cd(Change Directory):走到某个目录。cd ~回家,cd ..上二楼......哦不,上一级,cd -回到刚才待过的地方,类似电视遥控器的"回看"键,很好用。
3. 建与读
mkdir(Make Directory):建目录。加-p可以一口气建好几层,比如mkdir -p a/b/c。touch:创建一个空文件;如果文件已存在,只更新它的时间戳,不动内容。cat:把文件内容打印到屏幕上,适合看短小的文本文件。
4. 搬与删
cp(Copy):复制,cp 源 目标;复制目录要加-r。mv(Move):移动。目标是目录就搬进去;同一目录下换个名字,它就变成了重命名。一个命令两用。rm(Remove):删除。注意:Linux 的rm不进回收站,删了就是删了。 删目录用rm -r;还有个最危险的组合rm -rf(强制递归删除,不问任何问题)。它的危险范围是"你有权限删的一切",所以敲回车前,务必盯清楚rm后面写的路径,尤其别拿/和~开玩笑。
两个省力技巧:Tab 补全与历史命令
- Tab 补全 :敲出文件名或命令的前几个字符,按一下
Tab,系统帮你补全或列出候选。少打字,还防拼错。 - 历史命令 :按
↑↓翻出之前敲过的命令;history列出全部。刚敲过的长命令,下次按↑就能再来一遍。
忘了就查:man 和 --help
命令不需要死记,忘了有两件自助工具:
命令 --help:速查小抄,列出主要选项,比如ls --help。man 命令:完整手册(manual),比如man ls。打开后按空格翻页,按q退出。
会自己查,比背得多更重要。
光靠文件还不够:数据库为什么会出现
学完上面的操作你会发现:文件很自由------格式随便你定,内容随便你写。写个人笔记、存配置文件,它刚刚好。可一旦要正经管理大量、有结构的数据------比如全校几万条学生成绩、网店里每天都在新增的订单------纯文件方案马上暴露四个短板:
- 查找难:想找"所有 90 分以上的学生",只能自己一行行翻;
- 容易不一致:同一个地址写在两个文件里,搬家后只改了一处,另一处就在说谎;
- 多人同时用很难:两个程序同时写一个文件,内容很容易搅在一起;
- 不抗意外:写到一半断电,文件可能只剩半截。
为了解决这些问题,人们发明了数据库(Database) :一个专门管理数据的软件,把数据按固定结构存放,提供专门的查询方式,并负责处理多人同时访问和断电恢复。类比一下:文件像你自己的笔记本------自由,但难查;数据库像银行的账本系统------有格式、能查询、多个柜员同时操作也不会乱账。当然类比到此为止:真实数据库的内部机制比账本复杂得多。数据库不是本书的主题,这里只需要记住一句话:数据库是"用文件管理数据"的下一站,而它的地基,仍然是磁盘上的文件和操作系统。
动手实验
实验目标:亲手搭一个三层"个人目录",把创建、进入、复制、移动、删除全走一遍,再用 ls -l 认一遍每一列。全程命令可直接照敲。
第 1 步:建三层目录并进入
bash
mkdir -p ~/lab/ch2/notes/daily
cd ~/lab/ch2
pwd
预期观察:pwd 输出一条以 /lab/ch2 结尾的路径(~ 被展开成了你的家目录)。解释:-p 让 mkdir 顺带把不存在的父目录一起建出来。
第 2 步:看看目录里有什么
bash
ls -a
预期观察:除了 notes,还有 . 和 ..。解释:. 是当前目录,.. 是上一级,这两个"自带条目"在每个目录里都存在。
第 3 步:详细清单认列
bash
ls -l
预期观察(示意输出,实际以本机为准):
total 4
drwxr-xr-x 3 albert albert 4096 Aug 16 10:20 notes
从左到右认一遍:
drwxr-xr-x:权限。开头d表示目录(普通文件是-),后面每 3 个字符一组是读/写/执行权限,细节留给第 7 章;3:链接数,可以先理解成"有几个名字指向它";- 第一个
albert:属主;第二个albert:属组; 4096:大小(字节)。注意目录自身的大小不等于里面内容的总大小;Aug 16 10:20:最后修改时间;notes:名字。
第 4 步:创建、复制、移动、读
bash
touch notes/todo.txt
mkdir backup
cp notes/todo.txt backup/
mv backup/todo.txt backup/todo.bak
cat backup/todo.bak
预期观察:cat 什么都没打印。解释:touch 建的是空文件,复制和移动只搬文件本身,内容本来就是空的------"没输出"也是一种正常结果。
第 5 步:删除
bash
rm backup/todo.bak
ls backup
预期观察:ls backup 没有输出,说明目录空了。解释:rm 直接删除,不进回收站。
第 6 步:感受 Tab 补全和历史
敲 cd ~/lab/ch2/no,先别回车,按一下 Tab------预期观察:自动补全成 notes/。再连按几次 ↑------预期观察:刚敲过的命令一条条翻回来。解释:补全防拼错,历史省重复。
收尾(可选)
bash
rm -rf ~/lab
危险说明:这条命令会强制删除整个 ~/lab 目录且不询问 。危险范围仅限你自己的 ~/lab------路径必须照抄,不要改成 / 或 ~;拿不准就别执行,留着也不影响后面任何一章。
常见误区
- 误解 :Linux 也有 C 盘 D 盘,用之前先找到盘。→ 真相:Linux 只有一棵树,硬盘、U 盘都是挂到树上的某个目录(挂载,第 7 章讲),不存在盘符的概念。
- 误解 :删错文件可以去回收站找回来。→ 真相 :
rm是直接删除,没有回收站,执行完基本不可恢复。rm -rf敲回车前永远先看路径。 - 误解 :文件名大小写无所谓,跟 Windows 一样。→ 真相 :Linux 严格区分大小写,
readme.md和README.md是两个不同的文件;命令写成大写,还会直接告诉你"找不到命令"。
小结
- Linux 没有盘符:整个系统是一棵树,根目录
/是总入口,路径就是"从入口出发的走法"。 - 绝对路径以
/(或~)开头;相对路径从当前目录出发,..表示上一级。 - 九件套:
pwd看我在哪、ls看有什么、cd走、mkdir/touch建、cat读、cp复制、mv移动兼改名、rm删除。 - 目录里存的其实是"名字 → inode"的清单,第 7 章展开。
- Tab 补全和
↑历史能省大量功夫;忘了命令用--help和history自己查。 rm没有回收站,rm -rf之前务必看清路径。- 文件自由但有查找难、易不一致、不抗意外等短板,数据库正是为解决这些问题而生。
思考题
- Windows 用 C、D、E 盘符,Linux 只用一棵树。如果哪天你要给电脑加一块新硬盘,树形结构有什么好处?(提示:新硬盘需要打扰已有的路径吗?)
- 什么情况下必须用绝对路径?什么情况下用相对路径更方便?各举一个你自己的使用场景。
- 假设你是班长,要用普通文本文件管理全班的成绩表:增删学生、改分、查"谁挂科了",还有几个班委想同时修改。对照本章"光靠文件还不够"一节,想想你会撞上哪几个短板?