误入Linux魔法王国
足球擦着旧电脑机箱的散热孔飞进去的瞬间,小宇还来得及喊一声“糟糕”,整个人就被一股带着电路板焦香的吸力拽进了黑暗里。他下意识地抱紧脑袋,感觉像坐了好长一段时间的滑梯,屁股底下蹭得生疼,最后“咚”的一声砸在了一片硬邦邦的石板上。手里的足球还攥得紧紧的,皮面蹭破了一块,露出里面粉色的气门芯,头顶的风吹过来,带着点淡淡的臭氧味,还有点像烤箱里刚烤好的面包香——后来他才知道,这是服务器运转时散发的特有味道,Linux王国的城堡里到处都能闻到。
他揉着屁股坐起来,首先发现的是手里的鼠标不见了。那是他上周刚求妈妈买的电竞鼠标,DPI拉满、带着RGB灯的那种,此刻却没了踪影。他抬头看天,不是放学时灰蒙蒙的北京灰,是种很深的紫,像老式显示器的荧光屏底色,飘着点点发着淡蓝色光的小点,像夏夜的萤火虫,凑近了看才发现那些光点是一行行跳动的字符,一会儿变成`ls`,一会儿变成`cd`,转瞬又变成了`sudo`。脚下的石板磨得发亮,缝隙里也嵌着发光的符文,凑近了看是`/bin`、`/usr`、`/home`这样的字样,踩上去还有点温温的。
“这是哪儿啊?”小宇喊了一嗓子,声音在空旷的石板路上滚了两圈,没有回音,只有远处传来“滴”的一声轻响,像电脑开机时的蜂鸣器声。周围没有熟悉的便利店招牌,没有放学路上的梧桐树,只有远处一座尖顶的城堡,墙面上嵌着发着绿光的字符,像极了爷爷那台旧电脑的开机画面——对了,爷爷!小宇突然想起,这台旧电脑是爷爷以前用的,爷爷以前是个程序员,总跟他说什么“Linux”“咒语”的,他还以为爷爷在讲哈利波特的故事呢。
“你终于来了,我在这里等了三天了。”一个软乎乎的声音从旁边传来。小宇转头,看见一块半人高的石头上蹲着一只橘猫,毛是橘色带虎斑的,尾巴尖有一撮白毛,正一翘一翘地闪着小光点,像老式显示器的光标。它脖子上挂个小小的铜牌,上面刻着`>_`两个符号,琥珀色的眼睛眯起来,像在笑,又像在吐槽。
“你、你会说话?”小宇往后缩了缩。 “当然会,我是这里的向导,叫喵终端。”橘猫甩了甩尾巴,从石头上跳下来,肉垫踩在石板上没发出一点声音,“你爷爷当年总抱着你往机箱里塞玩具,我那时候还总舔你手上的饼干渣呢,你不记得我了?” 小宇瞪大眼睛:“你、你是我爷爷养的猫?” “算是吧,你爷爷当年在这里学魔法的时候,我就是他的向导,后来他回去了,我就留在王国里当向导了。”喵terminal 用爪子碰了碰他手里的破足球,“你爷爷当年也总拿个破足球往机箱里塞,说要找什么‘隐藏传送门’,跟你一模一样,我还以为他要等十年你才会来呢。”
小宇还没从“爷爷的猫成了魔法向导”的震惊里缓过来,就听见喵终端继续说:“欢迎来到Linux魔法王国,小宇。这里的规则跟你平时待的地方可不一样——没有鼠标,没有你点一下就能开的图标,所有的事情都要靠咒语完成。哦对,你们现在叫它‘命令行’。”它甩了甩尾巴,尾巴尖的光闪了闪,石板地面上就浮现出一行发光的字:`Welcome to Linux Kingdom, Xiaoyu!`
“命令行?”小宇凑过去看那行字,觉得神奇,“就是敲键盘的那种?” “对,就是跟这个世界沟通的唯一方式。”喵终端蹲坐下来,开始舔爪子,动作慢悠悠的,像在给学生上课,“首先我得给你讲清楚三个基本概念,不然你以后念咒语念错了,把城堡炸了我可不管。”
它伸爪子点了点地面,石板上的符文就亮了起来,第一个是城堡的图案,下面写着`Operating System`。 “第一个,叫操作系统,英文是Operating System,简称OS。”喵终端说,“你可以把整个Linux王国想象成一座大城堡,所有的门、窗户、仓库、厨房、卧室,都需要有人管,不然就乱套了:你想开仓库的门拿咒语书,得有人同意;你想在厨房做饼干,得有人给你分配烤箱;甚至你想在院子里放个风筝,都得有人给你划块地方。这个管着所有事情的管理员,就是操作系统。” 它甩了甩尾巴,城堡的图案旁边就浮现出另一座城堡的图案,上面标着`Windows`:“你平时用的Windows,就是另一座城堡的管理员,他比较温柔,给你准备好了所有按钮,你点一下就能开门,点两下就能开软件,就像给你做好了所有的预制菜,你热热就能吃。但是Linux这个管理员比较严格,你得跟他说正确的咒语,他才会给你开门,好处是,一旦你学会了咒语,你想做什么就做什么,比Windows自由多了,就像你自己会做饭,想吃什么就做什么,不用受预制菜的限制。” 小宇点点头,他平时用电脑的时候,总觉得Windows点来点去很麻烦,有时候想找个文件翻半天都找不到,原来是因为管理员太温柔了,管得太死。
“第二个概念,叫命令行,英文是Command Line。”喵终端点了点第二个符文,是个说话的泡泡图案,“你跟管理员沟通的语言,就是命令行。就像你跟同学说话用中文,跟外国小朋友说话用英语,跟Linux城堡的管理员说话,就得用命令行。你不能跟管理员说‘请帮我开个门’,他听不懂,你得说正确的咒语,他才会给你开门。” 它用爪子敲了敲石板,泡泡图案旁边就浮现出两个单词:`ls`和`cd`。“比如你想看周围有什么,就说`ls`,就像你说‘周围有什么’,管理员就会给你列出来;你想去城堡里,就说`cd 城堡`,就像你说‘我要去城堡’,管理员就会给你开门。是不是很简单?” 小宇试着小声念了一句“ls”,话音刚落,周围的石板就亮了起来,一个个发光的字符跳出来:`bin boot dev etc home proc root usr var`,像一群发光的萤火虫围着他转,把他吓了一跳。 “哇!真的有用!”他惊喜地喊。 “那当然,这可是魔法王国的规则,咒语对了,就有反应。”喵终端得意地甩了甩尾巴,“不过我得提醒你,有些咒语不能乱念,就像你不能随便跟管理员说‘把整个城堡都炸了’,之前有个小朋友不信,念了个叫`rm -rf /`的咒语,结果整个城堡的厨房都炸了,现在还在修呢,没有向导同意,绝对不要念不认识的咒语,知道吗?” 小宇赶紧点头,把这句话记在了心里。
“第三个概念,叫Shell,英文就是Shell,没有别的名字。”喵终端点了点第三个符文,是个魔法杖的图案,“很多人会把命令行和Shell搞混,其实很简单:命令行是你说的咒语,Shell就是你施法用的魔法杖。你想念咒语,不能光用嘴说,得用魔法杖把咒语的力量引出来,把咒语写到魔法杖上,敲一下(就是按回车键),魔法就生效了。” 它伸出爪子按了按旁边石板上凸起的一个小按钮,就是电脑键盘上的回车键,“你看,这就是回车,就像魔法杖敲一下地面,咒语就释放出去了。现在魔法王国里最常用的Shell是bash,全称是Bourne Again SHell,就像最普通的木棍魔法杖,几乎所有的小魔法师都用这个,稳当不容易出错。等你以后厉害了,可以换zsh,就像镶了红宝石的魔法杖,能帮你自动补全咒语,不用你一个字一个字打,但是现在先用bash就好。” 小宇似懂非懂地点点头,又问:“那我爷爷当年用什么魔法杖?” “你爷爷当年用的也是bash,不过他后来自己改过,加了几个小咒语,就像给魔法杖上绑了个小挂饰,用着更顺手。”喵终端突然笑了,“你爷爷当年最厉害的本事,是用命令行写了个贪吃蛇游戏,现在还在王国的博物馆里摆着呢,等以后你学会了,我带你去玩。”
“对了,你肯定好奇,这个Linux王国是怎么来的吧?”喵终端甩了甩尾巴,尾巴尖的光闪了闪,石板上的符文就变成了一幅画:一个戴眼镜的年轻人坐在电脑前,旁边放着一罐可乐,屏幕上是绿色的代码,窗外是飘着雪的芬兰森林。 “1991年,有个叫林纳斯·托瓦兹(Linus Torvalds)的芬兰小伙子,当时还是个大学生,就像个刚入门的魔法学徒。”喵终端的声音变得慢悠悠的,像在讲童话,“他之前用的魔法系统(就是Unix,Linux的‘爷爷’)要花好多钱买,就像你要买一套全集的哈利波特,要好几百块,他买不起,就决定自己写一个。一开始他只是写了个小咒语,能让电脑显示个‘Hello’,后来全世界的魔法学徒都看到他的咒语了,都觉得很好用,就一个个跑过来帮他改,大家一起拼拼凑凑,最后就成了现在这么厉害的Linux城堡。” 画里的年轻人旁边突然冒出来一只穿小礼服的小企鹅,晃着胖乎乎的身子啄了年轻人的手一口。 “那你肯定会问,为什么城堡的吉祥物是企鹅?”喵终端笑出了声,“因为林纳斯当年去澳大利亚玩,在海边被一只企鹅咬了一口,他觉得这只企鹅胖乎乎的,穿小礼服的样子特别像魔法学徒,就选它当吉祥物了。这只企鹅叫Tux,名字是Linus和Unix的首字母拼起来的,是不是很巧?还有人说因为Linux的服务器都放在很冷的机房里,企鹅不怕冷,所以才选它,其实根本不是,就是因为被咬了,哈哈。” 小宇也笑了,他没想到Linux的起源还有这么有意思的故事。
“好了,理论课讲完了,我们来练个最简单的咒语吧。”喵终端站起身,抖了抖毛,“这个咒语叫`echo`,作用就是让魔法王国显示你想说的话,就像你对着山谷喊,会有回声一样。你跟着我念:`echo 'Hello Linux Kingdom!'`,然后按回车键。” 小宇蹲下来,学着喵终端的样子,用爪子(哦不,用手指)在石板上敲那行字,敲完按了一下旁边凸起的回车键。 瞬间,整个天空都亮了起来,一行行发着金光的字飘在半空中:`Hello Linux Kingdom!`,像放了一场小小的烟花,周围的光点都跟着闪了起来,像在鼓掌。小宇惊喜地抬头看着那些字,觉得比任何动画片都好看。 “恭喜你,小宇!”喵终端用爪子推过来一个亮闪闪的徽章,上面是胖乎乎的Tux企鹅,穿着小礼服,手里还拿着个魔法杖,“你学会了第一个有实际效果的咒语,这是你的入门奖励,以后每学会一个咒语,都会给你发一个徽章,集齐十个就能解锁隐藏关卡,找到你爷爷当年写的贪吃蛇游戏哦。” 小宇赶紧把徽章攥在手里,凉丝丝的,上面还有Tux的小脚印,摸起来滑溜溜的。
“现在你已经会了一个咒语,接下来我们要学的,都是能在王国里自由行动的必备咒语。”喵终端甩了甩尾巴,指向远处通往城堡大门的石板路,“首先我们要学的,是怎么看清楚周围的每一条路,怎么跨过门槛走进城堡,怎么给自己布置一个舒服的小房间。等你学会了这些,我们就能去探险更深的地方,找爷爷留下的宝藏,还有找到回去的传送门。” 小宇攥着徽章,低头看了看手里还沾着机箱灰的足球,又抬头看了看飘着金色文字的紫色天空,刚才掉下来时的害怕早就没了,反而觉得兴奋得不行。他以前总觉得编程是爷爷那种大人才会的东西,没想到现在自己真的进了这个魔法世界,还能学咒语,找爷爷的宝藏。
“对了,我再给你提个醒。”喵终端走了两步,又停下来回头看他,“刚才你念`ls`的时候看到的
刚才你念`ls`的时候看到的那些发光的词,就是这座城堡里所有房间的名字,我们叫它“目录”,英文是Directory。”喵终端用爪子点了点脚边的石板,那些发光的词就一个个跳起来,像被风吹动的蒲公英,在紫莹莹的天空下闪出淡蓝色的光,“你平时用的电脑里也有这些目录,比如你存作业本的‘文档’文件夹,存足球照片的‘相册’文件夹,其实都是目录,只是Windows那个城堡的管理员比较温柔,给你起了个好听的名字,Linux的管理员比较直白,就直接用功能给房间命名了。”
它甩了甩尾巴,石板上的光点就聚成一幅城堡的平面图,每个房间门口都飘着发光的门牌: “你看,我们现在站的这个地方是整个城堡的大厅,叫根目录,英文是Root Directory,路径是`/`,就像你家小区的中心广场,所有房间的门都从这里开始算。如果你要往左走,就能看到放咒语书的仓库,叫`/bin`,`bin`是Binary(二进制)的缩写,所有的基础咒语书都在这里,你刚才用的`echo`、`ls`、`pwd`、`cd`这些,都是这里最基础的入门咒语,就像你工具箱里的螺丝刀、锤子,平时用的最多。 再往前走是启动大厅,英文是`/boot`,城堡每天早上开门的时候,都要先在这里念启动咒语,把城堡的门、窗户、灯都打开,就像你早上起床要先开灯、刷牙,是开门的第一个步骤,要是这里的咒语书丢了,城堡就开不了门了。 旁边的`/dev`是设备工具箱,英文是Device的缩写,管着城堡里所有的魔法道具:你的鼠标、键盘、显示器、甚至足球的气门芯,都是这里的道具,管理员会给你分配使用权,你才能用,就像你去科技馆玩VR眼镜,要先领个牌子,才能用。 旁边的`/etc`是管理员手册,英文是Et Cetera(等等)的缩写,里面写着城堡所有的规则:几点开门、几点关灯、谁可以进哪个房间、甚至每个魔法师能念什么级别的咒语,都写得清清楚楚,就像你们班的班规,所有人都要遵守,要是违反了,管理员就会把你关小黑屋。 后面那片带小房子图案的区域是魔法师的小窝,英文是`/home`,每个魔法师都有自己的小房间,房间里可以放自己的咒语书、玩具、日记,别人不能随便进,就像你自己的卧室,只有你能进,爸爸妈妈要进也要敲门。每个小房间的名字就是魔法师的名字,比如你的房间就叫`/home/xiaoyu`。 最旁边的`/tmp`是临时工作台,英文是Temporary的缩写,你平时做手工、练咒语的时候,可以把材料放在这里,但是每天半夜管理员都会来收拾,把没用的东西都扔掉,所以重要的咒语书、日记本不能放在这里,就像你家的餐桌,吃完饭就要收拾,不能把作业本放在餐桌上,不然会被妈妈当成垃圾扔了。 最远的那个带波动图案的房间是魔法阵记录室,英文是`/var`,里面放着所有魔法波动的记录:你什么时候念了什么咒语、产生了什么效果、甚至城堡的日记、魔法师之间的信件,都放在这里,就像你的日记本,记录每天发生的事情,要是这里乱了,管理员就找不到你之前念过的咒语记录了。”
小宇凑过去看平面图,突然指着`/home`区域里最小的一间小房子问:“这个是不是我的房间?里面怎么有个足球的图案?” “对,那就是你的房间,你刚才掉进来的时候攥着足球,城堡的管理员已经把你的信息登记好了。”喵终端挥了挥爪子,石板上的平面图就变成了一扇发光的门,门上飘着`/home/xiaoyu`的字样,“走,我带你去看看,你爷爷当年给你留了东西。”
推开门,小宇首先闻到的是淡淡的橘子味,跟他小时候爷爷家里的味道一模一样。房间不大,靠窗摆着一张木书桌,桌面上磨得发亮,放着一本封皮磨得起球的数学练习册——那是他三年级的时候落在爷爷家的,旁边摆着个皱巴巴的足球,和他手里掉进来那只破的一模一样,只是没破。书桌的抽屉半开着,里面露出半本泛黄的笔记本,封面上写着歪歪扭扭的字:“Linux魔法咒语入门”,旁边画了个胖企鹅,就是Tux。 “这是你爷爷当年用的咒语笔记本,他后来回去的时候,特意留在这里的。”喵终端跳上书桌,用爪子碰了碰笔记本,“你爷爷当年是城堡里最厉害的初级魔法师,会用命令行写游戏、做网站,甚至能自己改城堡的规则,他临走的时候说,等小宇长大了,会来找他的宝藏。” 小宇的鼻子有点酸,他想起爷爷住院的时候,总拉着他的手说“等爷爷好了,再教你玩魔法”,原来爷爷说的魔法,就是这个Linux命令行。他伸手去拿笔记本,指尖碰到封皮的瞬间,笔记本自动翻到了最后一页,上面写着:“亲爱的小宇,如果你看到这个,说明你已经学会基础咒语了。去城堡顶层的图书馆找《魔法咒语大全》,里面有爷爷给你留的惊喜。——爱你的爷爷”。
“好了,别emo了,我们先把你今天学的咒语巩固一下。”喵终端跳下书桌,甩了甩尾巴,“刚才你学了`ls`是看周围有什么,`cd`是去某个目录,`pwd`是看当前位置,`echo`是显示文字,我再给你讲个更实用的咒语:`man`,这个是‘魔法手册’的意思,英文是Manual的缩写,你要是忘了某个咒语怎么用,就输入`man 咒语名字`,比如`man ls`,管理员就会给你显示这个咒语的所有用法,就像你不会的题翻课本一样,特别方便。” 它顿了顿,又补了句:“不过现在城堡的魔法手册还是英文的,等你以后厉害了,可以自己翻译成中文,就像你爷爷当年做的那样,他翻译了整个城堡的基础咒语手册,现在还在`/usr/share/doc`的目录里放着呢。”
小宇眼睛一亮,赶紧试了试,输入`man ls`,果然,石板地面上浮现出一大段发光的字,详细写着`ls`的所有用法:比如`ls -l`是显示详细信息,`ls -a`是显示隐藏的文件,`ls -lh`是把文件大小转换成KB、MB的单位,就像把“1234567字节”转换成“1.2MB”,方便看。他翻了两页,觉得眼睛有点花,喵终端就说:“不用现在全背下来,以后用的时候再查就好,魔法师不是要背下所有咒语,是要知道遇到问题的时候怎么查手册,这才是最重要的。”
接下来,喵终端给他讲Linux命令行的几个基本规则,都是新手最容易踩的坑: “第一,所有咒语都区分大小写,就像你说的‘苹果’和‘苹guo’是两个字,Linux里的`echo`和`ECHO`也是两个完全不同的咒语,你输入大写的`ECHO`,管理员会告诉你‘找不到这个命令’,就像你跟管理员说‘苹guo’,他听不懂一样。所以所有的命令、目录名、文件名,都要严格按照大小写来,不能乱敲。” “第二,咒语的参数要加在命令后面,用空格隔开,比如`ls -l`,`ls`是命令,`-l`是参数,中间要加空格,就像你说‘我要吃苹果,要红的’,‘苹果’和‘红的’中间要停顿一下,不能说‘我要吃苹果红的’,管理员听不懂。还有参数可以组合,比如`ls -lh`,就是同时要详细信息、要转换单位,就像你说‘我要吃苹果,要红的,要大的’,管理员就能给你挑出来最大的红苹果。” “第三,路径的规则,你要去某个目录,有两种写法:一种是绝对路径,就是从根目录`/`开始写,比如`/home/xiaoyu`,就像你说‘我要去北京市海淀区XX小学3年级2班’,说得很清楚,不管你在哪里,都能找到;另一种是相对路径,就是相对于你当前的位置,比如你当前在`/home`目录,要去自己的小房间,直接写`cd xiaoyu`就行,就像你说‘我要去2班’,大家都知道你在说哪个学校的2班。还有`.`代表当前目录,`..`代表上一级目录,比如你在`/home/xiaoyu`,要回到`/home`,就输入`cd ..`,就像你从2班回到教学楼大厅,特别方便。”
小宇试了试,先在`/home/xiaoyu`输入`pwd`,显示`/home/xiaoyu`,然后输入`cd ..`,再输入`pwd`,就显示`/home`,果然回到了魔法师小窝的公共区域,他又输入`cd /`,直接回到了城堡大厅,比在Windows里一层一层点文件夹快多了,他以前找个文件要点五六下,现在敲几个字母就搞定了,难怪爷爷说命令行是魔法。
“对了,我再给你讲三个绝对不能乱念的咒语,这三个是城堡里的禁咒,乱念会把城堡炸了的。”喵终端的表情突然变得严肃,尾巴也放了下来,没有了平时嬉皮笑脸的样子,“第一个是`rm -rf /`,这个咒语的作用是删除城堡里所有的文件,就像你把整个城堡的所有房间、所有咒语书、所有日记本都用橡皮擦擦掉,城堡就空了,再也没有魔法了。之前有个刚来的小魔法师不信,偷偷念了这个咒语,结果整个城堡的厨房都炸了,现在还在修呢,没有向导在旁边,绝对不要念这个咒语,知道吗?” 小宇赶紧点头,把这句话记在了笔记本上