第2章 上手 Linux:环境与文件操作
第2章 上手 Linux环境与文件操作上一章你装好了 Ubuntu敲下人生第一条命令uname -a。但只看不动永远学不会——这一章我们真的动手建文件、复制、搬家、删除全程在终端里完成。本章回答什么问题Windows 里的 C 盘、D 盘在 Linux 里去哪儿了文件到底放在哪绝对路径和相对路径怎么写日常文件操作靠哪几个命令就够了命令忘了怎么用怎么自己查数据存成文件挺好的为什么后来还要发明数据库正文终端是窗口bash 是办事员第 1 章我们装好了 Ubuntu打开方式见第 1 章WSL 用户直接在开始菜单里找 Ubuntu 图标。那个黑乎乎的窗口有个正式名字终端Terminal。终端本身其实不懂命令它只负责显示字符真正听懂你说话的是一个叫bash的程序它是一种外壳Shell——还记得上一章说的内核与外壳吗bash 就是那个外壳替你把话传给内核去干活。打开终端你会看到一行提示符ubuntu:~$从左到右拆开看 是当前用户名ubuntu是机器名~是当前位置马上讲结尾的$表示我准备好了请输入。如果结尾是#而不是$说明你现在是超级用户 root——权限大到足以搞坏整个系统本书除非必要一律用普通用户。命令的格式很统一命令 参数。比如ls -l /etcls是命令-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. 看pwdPrint Working Directory我现在在哪输出当前目录的绝对路径。lsList这里有什么加-l出详细清单加-a连以.开头的隐藏文件一起显示。2. 走cdChange Directory走到某个目录。cd ~回家cd ..上二楼……哦不上一级cd -回到刚才待过的地方类似电视遥控器的回看键很好用。3. 建与读mkdirMake Directory建目录。加-p可以一口气建好几层比如mkdir -p a/b/c。touch创建一个空文件如果文件已存在只更新它的时间戳不动内容。cat把文件内容打印到屏幕上适合看短小的文本文件。4. 搬与删cpCopy复制cp 源 目标复制目录要加-r。mvMove移动。目标是目录就搬进去同一目录下换个名字它就变成了重命名。一个命令两用。rmRemove删除。注意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 步建三层目录并进入mkdir-p~/lab/ch2/notes/dailycd~/lab/ch2pwd预期观察pwd输出一条以/lab/ch2结尾的路径~被展开成了你的家目录。解释-p让 mkdir 顺带把不存在的父目录一起建出来。第 2 步看看目录里有什么ls-a预期观察除了notes还有.和..。解释.是当前目录..是上一级这两个自带条目在每个目录里都存在。第 3 步详细清单认列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 步创建、复制、移动、读touchnotes/todo.txtmkdirbackupcpnotes/todo.txt backup/mvbackup/todo.txt backup/todo.bakcatbackup/todo.bak预期观察cat什么都没打印。解释touch建的是空文件复制和移动只搬文件本身内容本来就是空的——没输出也是一种正常结果。第 5 步删除rmbackup/todo.baklsbackup预期观察ls backup没有输出说明目录空了。解释rm直接删除不进回收站。第 6 步感受 Tab 补全和历史敲cd ~/lab/ch2/no先别回车按一下Tab——预期观察自动补全成notes/。再连按几次↑——预期观察刚敲过的命令一条条翻回来。解释补全防拼错历史省重复。收尾可选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 只用一棵树。如果哪天你要给电脑加一块新硬盘树形结构有什么好处提示新硬盘需要打扰已有的路径吗什么情况下必须用绝对路径什么情况下用相对路径更方便各举一个你自己的使用场景。假设你是班长要用普通文本文件管理全班的成绩表增删学生、改分、查谁挂科了还有几个班委想同时修改。对照本章光靠文件还不够一节想想你会撞上哪几个短板