Linux就是这个范儿[试读]
1.1 让Linux入驻我们的电脑
有一对儿异地的恋人,他们每天在手机上聊天,显示的距离永远都是1648 km。快到年底了,女孩实在受不了这种距离而提出了分手,男孩沉默不语。除夕之夜,女孩在家中刷新手机,看到男孩距离她只有1.1 km,再刷新,只有0.9 km。她明白即将要发生什么,含着热泪走向门口……当晚,在隆隆的焰火声中,他们的距离变成了5 cm,于是第二天他们还是分手了…… 这似乎是个悲剧,不知道你能看出笑点吗? 大多数Linux初学者与Linux之间就好像是异地的恋人,他们之间永远都是Windows所隔开的距离。久而久之,实在受不了这种距离而最终要彼此离开。少数人鼓起了勇气,走进Linux并试图完成一次“亲密接触”... 查看全部[ 1.1 让Linux入驻我们的电脑 ]
1.2 不一样的图形操作
几乎所有Linux的新用户都会认为Linux的图形界面是相当地绚丽又多彩。因为这毕竟是一种全新的体验,那种超脱Windows俗套的快感就会油然而生。对于刚刚翻开这本书的人来说,如果对Linux是抱有这样认识的,那就太棒了,因为咱们又多了一个洗脑的对象了:P。此时此刻,真正的亲密接触就要开始啦…… 1.2.1 没有图形的图形 虽然Linux的图形界面美轮美奂,但是有一个秘密却不得不告诉你:Linux本身是没有图形界面的。不管你信还是不信,事实就是这个样子。这么说的原因并不是因为Linux只是一个内核,其实所有类UNIX操作系统本身都没有图形用户界面。 那为什么我们能通过图形用户界面来使用L... 查看全部[ 1.2 不一样的图形操作 ]
1.3 主流桌面环境
Linux强大的适应性、创新性以及开放性在它的桌面环境方面得到了十分充盈的展现。目前比较流行的就有GNOME、KDE、XFCE和LXDE,它们并称为Linux图形界面四杰,个个美轮美奂,风格迥异。它们并不是单纯的单一软件,而是一套软件集合,比如WM、DM、应用框架库等。最近有传言称Linus Torvalds 大神在Google+上大骂GNOME3“不能容忍的凌乱”,并改投XFCE的怀抱。不管真假,至少我认为GNOME3是很考验智商的。其实这玩意没有好坏之分,只是口味不同,自己用着舒坦的就是最好的,是不是? 本书并不准备截图给各位欣赏,原因主要有三:一是印图成本太高,我也是屌丝一名,知道挣点... 查看全部[ 1.3 主流桌面环境 ]
1.4 返璞归真的命令行
有一种说法,现代计算机不是靠电力驱动,而是靠“鼠标”。多少应用程序的界面都是需要移动和点击鼠标来执行的。计算机本来的用意是把人类从反复单调的工作中解放出来,但摆在我们身边的残酷现实是我们每个人每天不得不反复单调地移动和点击鼠标,以确保养家糊口的工作能够顺利正确地完成。 别叹气,存在另一个世界,那就是命令行,让你暂时远离鼠标。对那些苦哈哈的程序猿来讲,这也许是另一种情调的工作方式。我们突然之间拥有了另一种意想不到的收获,例如我想看看用户目录下的文件大小,然后按升序排列产生个报表。如果用C/C++完成这项工作,至少得用好几十行代码,但是用一句命令行就能完成上面的功能。 du -s * | so... 查看全部[ 1.4 返璞归真的命令行 ]
1.5 结束语
我们的第一次亲密接触到此该告一段落了。如果Linux长什么样你依然不知道,那真的实在是抱歉,你太懒了。如果你要问我学习Linux的捷径是什么,我的答案就是两个字:勤劳。一定要勤动手,才能学好Linux。 Linux与Windows是完全不同的操作系统,拥有着独特的风采和特性。虽然我们对Linux远不如像Windows那样熟悉和亲切,但是通过本章的亲密接触,或许能够让你体会到一点Linux所特有的那种“笨拙”的温柔。只要那么一点点就足够了,我想那已经足够提起你的欲望了。 接下来,我们将会从多个方面、多个角度以及多个层次,与大家共同去探索Linux到底是什么。... 查看全部[ 1.5 结束语 ]
2.1 多用户多任务分时操作系统
时间总是过得那么快,如流水一般哗啦啦地就淌走了一大堆!周遭事事沧桑变迁,喧哗或耳语中流传的故事已渐模糊,转眼间2014就来了。泰坦尼克号撞冰山都100+年了,同名的电影也改成3D的了,只是你想看的全都给剪没啦。如果你是未来的考古学家,我可以自豪地告诉你,我们这个年代电脑早就飞进了平常百姓家。 千万不要以为我在闲扯,Linux与泰坦尼克号这个倒霉蛋是有着千丝万缕的联系的。具体有什么联系,咱们按下不表,在后面的章节中还会有十分精彩的描述。 很多人会认为Linux是一个年轻的操作系统,至少我本人在很长一段时间内都是这么认为的。因为它总能紧跟时代潮流,别人有什么它有什么,USB、WiFi、SSD…... 查看全部[ 2.1 多用户多任务分时操作系统 ]
2.2 用户的身份
既然Linux从诞生的那一天起就是多用户的,足可见多用户管理是Linux一项多么重要的功能构成。那么它都管理一些什么呢?简单来说就是管理用户的等级和用户对文件的访问权。 Linux下的用户等级实际上是非常简单的,就两个等级——root和非root。root用户在Linux下是拥有至高无上的权利的,也就是说它可以胡作非为。但是比较幸运的是,只有一个用户是root,它的用户名就是root。而非root用户的权利是严格受限的,只能访问由root规定的文件。为了比较形象地说明Linux用户的管理模式,我们提出了这样一个模型…… 2.2.1 澡堂子模型 我们把Linux的用户管理方式比喻成一个澡堂... 查看全部[ 2.2 用户的身份 ]
2.3 文件和它与权限的关系
千万不要以为前面所介绍的就是“多用户”的全部因素,毕竟在“澡堂子模型”中,那些只是人的因素。还有一个十分重要的一项,物的因素还没有出现,也就是那些柜子跟锁。要是一定得与Linux中具体的事务相对应的话,那就是文件和目录了。目录和文件在为“多用户”系统中能够形成多个用户和平共处的局面立下了汗马功劳,同时也为其奠定了坚实的基础。接下来我们就看看它们是怎么回事儿吧。 2.3.1 目录与文件 Linux的目录与文件组织方式与Windows是有很大不同的。Windows会将不同的磁盘分区划分为C、D、E、F……等盘,但是在Linux下你找不到。难道Linux不支持磁盘分区吗?不是,它支持。只是磁盘的... 查看全部[ 2.3 文件和它与权限的关系 ]
2.4 程序的执行问题
Linux的多用户说完了,还需要进行下一个话题,那就是多任务的问题。所谓多任务,就是同一时刻能够执行多个程序。这个问题其实对于大多数Windows用户来讲都不是个问题,我们经常会一边浏览网页,一边用QQ聊天,同时还能听音乐。因为Windows可以将这些软件的界面同时展现在屏幕上,即便放不下,也可以通过“窗口”堆叠的方式堆起来。要用哪个就将哪个放到最上面好了。Linux在使用图形环境下的时候也是这样,所以没有什么要专门拿它来说一说的必要。但是在命令行下这就真是一个问题了。比如你知道如何在命令行下同时运行多个程序吗?同时开几个终端的做法你就别耍这个小聪明了,因为那个不算。接下来我们就要看看Linu... 查看全部[ 2.4 程序的执行问题 ]
2.5 软件的安装方式
到此为止,Linux长什么样,怎么用算是基本讲完了。但真正掌握一个系统的标志不是你都知道它能干什么或者是怎么干,而是能够按照自己的意图安装自己需要的软件。因为操作系统能够提供的功能是有限的,而我们的欲望是无限的。接下来我们就要搞清楚这个问题,看看在Linux下如何安装软件吧。 2.5.1 从源代码安装软件 自己动手丰衣足食,从源代码安装软件是Linux系统中最原始也是最为有效的一种方式。采用这种方式可以安装所有针对Linux系统开发的软件,以及绝大部分针对类Unix系统开发的软件。 从源码安装离不开安装“三步曲”。在演奏这“三步曲”之前,因为不确定源码中是否包含上次编译过的目标文件(* ... 查看全部[ 2.5 软件的安装方式 ]
2.6 磁盘的管理方式
用户也好,权限也罢,它们总是要有一个证明自己的天地;文件也罢,程序也好,它们总是得有一个安身立命的家园;即便Linux自己也必须得有自己的栖身之所。那就是磁盘。其实Linux对磁盘的管理十分对得起两个字:“不赖”! 2.6.1 Linux的文件系统——甩Windows几条街 只要是磁盘就得格式化,好像已经是天经地义的事情了,几乎没有人去问为什么。很多有经验的人似乎都有个这样的经历,就是风风火火地从朋友那里借来了一张装满高清“A”片的移动硬盘,暗爽过后还想留下一些待以后慢慢品味,可是总有那么一些质量比较好的片子(尺寸超过4G)复制失败(好容易写本书了,就不要暴露你的品味啦)。追问原因还往往被... 查看全部[ 2.6 磁盘的管理方式 ]
2.7 解决上网问题
其实对于很多人来说,我前面的内容讲述得无论有多么生动,多么引人入胜,他总是能够很淡定、很淡定的等待着。等待着什么呢?他们在等着怎么解决Linux的上网问题,要不然还活什么大劲呢?好了,激动人心的故事即将开场,那就来吧…… 2.7.1 了解IP地址 数据列车在网络轨道上川流不息地穿梭来往。这些列车完全是无人驾驶的,但是它们能准确地把数据包裹传送到目的地是有很大学问的。网络数据传输有一套相当完善的机制。不仅要在包裹上注明收发双方的地址和名字,以及传递方式(挂号信TCP/普通快递UDP)等详细信息,还要提供各种错误检测和处理手段。比现实中的“高铁运输”强一万倍! 谈论网络不能不提大名鼎鼎的IP... 查看全部[ 2.7 解决上网问题 ]
2.8 不能割舍的shell
shell是命令行解释和执行器。它是介于使用者和 UNIX/Linux操作系统核心程序(kernel)之间的一个接口。当你登录(login)时,一个交互式的shell会跟着启动,并提示你输入命令。在你键入一条命令后,剩下的就是shell 的本职工作了——解释命令行、获得规范的命令结构,处理通配符、重新定向、管道和作业控制,然后搜索函数、内外部命令,最后执行命令。采用作业控制机制的目的是提供用户介入的机会,允许用户使用内部命令或键盘信号来启停作业。 2.8.1 勤勤恳恳的bash UNIX/Linux下的shell俱乐部里的成员不少,除了Bourne shell(/bin/sh)以外,还有C... 查看全部[ 2.8 不能割舍的shell ]
2.9 文本处理
其实Linux系统总是倾向于文本的,至于为什么本书在后面还有更深入的介绍。但是要证明我们所说的内容不虚,就得给你们看看Linux处理文本的本事。 2.9.1 查看文本内容 在上一章我给你讲了一个有关命令行的罗曼蒂克故事,里面涉及了文本内容查看的操作。在Linux 系统上查看文件的方法很多,包括cat、more、less、head和tail 等,其中 tail 命令的作用我要向你好好交待一下。它不仅可以用于查看文件的最后若干行的内容(默认为最后10行),还可以实现不停地读取和显示文件内容。这样做有什么好处呢?当然有,它可以用于查看日志起到实时监视的作用。 2.9.2 正则表达式 其实Li... 查看全部[ 2.9 文本处理 ]
2.10 结束语
数十年如一日,弹指一挥间!纵使这些操作方式古老而又笨拙,甚至被很多人认为有些愚蠢。可是这就是Linux,这就是Unix,它就是这么使用的。而且很快你就会爱上它。因为无论是Linux也好,Unix也罢,它们都有一颗很傻很天真的心。 但是我们还不打算现在就将Linux的心全盘展示,因为我们认为太容易得到也就特别容易抛弃。所以,接下来我们要看一下Linux的组织原则,那里有一颗特别的树……... 查看全部[ 2.10 结束语 ]
4.1 Unix的文化和哲学
1997年对于我来说,是一个比较重要的年份。因为这一年我拥有了一台属于自己的多媒体电脑,而且还预装了我认为是当时最先进的Win95操作系统,甚至还带有一个不知道干什么用的33.6K的Modem。从此便渐渐远离了DOS、远离了UCDOS、CCED 、WPS,也远离了我最喜爱的《仙剑奇侠传》 。伴随而来的是VB5、金山盘古和Louts123,以及后来的《剑侠情缘II》。这一年我听说了Unix这个操作系统。但是当我知道它是1969年的产品时,就很不屑地将它抛在了脑后。这一年开始订阅《电脑爱好者》杂志(个人觉得这句话说得有点过于庄重了)。 转眼就到了1998年,《泰坦尼克号》上映。作为当时的潮男靓女... 查看全部[ 4.1 Unix的文化和哲学 ]
4.2 “四大笨”之一:万般皆文本
初学Linux使用的人们,坐在Linux老手旁边,看他们帮自己解决一些工作上的问题时,往往会惊叹于他们似乎不怎么使用GUI。而更让你惊讶的是他们频繁使用“管道”和“I/O重定向”的频率。这让你总是有一种莫名的敬佩感不知觉地从心中幽幽然升起。 其实,Linux老手们并不是刻意要在你们面前显摆他们有多么的牛x而去使用让你眼花的文本界面;更不是为了在你们面前装13而大量使用“管道”和“I/O重定向”。只因这样更简单、更灵活、更强大、更具效率,更符合Linux的使用方式和设计特点。 也许你还没有察觉,或是并没有太在意。不仅仅老手们喜欢使用文本界面,甚至在Linux中除了那些能够执行的程序文件之外,... 查看全部[ 4.2 “四大笨”之一:万般皆文本 ]
4.3 “四大笨”之二:四处用脚本
若说到在Linux下的编程,稍微对编程有所了解的人都会想到C语言。Linux的内核、shell、基础命令程序,也的确是用C语言编写的。这首先证明了一点:C语言很强很通用。到目前为止,C语言依然垄断着计算机工业中几乎所有的系统编程。而且也正因为是C语言,才使得Unix,以及后来的Linux能够这么广泛地被人们去研究、去改进、去制作自己的分支,以至于我们能在各种硬件平台上使用它们。 但是细心的人会发现,Linux启动过程中所涉及的各种程序,很少有C语言的痕迹。它们大多是“文本”,能够被计算机执行的“文本”。不单单在启动过程中是这样,那些用于安装软件的工具yum、apt-get,甚至是config... 查看全部[ 4.3 “四大笨”之二:四处用脚本 ]
4.4 “四大笨”之三:规律无处寻
Linux初学者直接寻求经验丰富的老手来帮忙,是最为快捷的学习方法。但是困惑也随之而来。初学者们会发现,找不同的人在解决相同问题的时候,所采用的方法都是大相径庭的,根本找不到规律。老手们在解决同一个问题上所持的观点也非常迥异,有些甚至是截然相反。更让初学者恼火的是,不同的Linux发行版,在对待同一个问题的时候,也会有完全不同的实现方法。这些越发地让初学者感到恐惧,不知道Linux该如何学起。 需要面对这种困惑的不单单是初学者们,那些所谓“经验丰富”的老手们也大多是在为了这样那样的差别而疲于奔命。难道Linux是一个十分“不靠谱”的系统,解决一个问题就没有一个统一的方法吗? 答案是:这个真... 查看全部[ 4.4 “四大笨”之三:规律无处寻 ]
4.5 “四大笨”之四:配置乱生根
在学习Linux的时候,让人受不了的不单单是“规律无处寻”,还得去学习和掌握各式各样的配置文件。即便配置文件可以不用关心,环境变量也总是出来捣乱,让某些程序的行为“异常诡异”。即使这些你都想视而不见,只是想敲敲命令,鼓捣点你认为比较浅显的东西,各种命令的命令行选项也会绕得你头晕目眩。从此大叫一声:Linux咋就这么难学? 这与前面刚说过的“规律无处寻”差不多,是导致初学者十分困惑的另外一个“笨”现象——配置乱生根。不过与“规律无处寻”所不同的是,后者还能有一个抓住本质的“机制”。要严格说起来,“配置”也算是一种机制。但是你要说“配置”是一种策略,也不见得不恰当。所以,“配置”跟其他某些具体的... 查看全部[ 4.5 “四大笨”之四:配置乱生根 ]
4.6 什么样的文化
这是一个什么样的传统文化和设计哲学呢?可以用“简单”和“傻x”来概括,也就是Keep It Simple and Stupid,简称KISS。这是所有Unix以及Linux这样的类Unix操作系统的传统文化和设计哲学。这里最重要的就是傻x,因为往往傻x和精明就是一念之间的事儿。 4.6.1 “傻x”的精明 能够说明这种Unix传统文化和设计哲学“傻x”的地方有很多,比如:文件就是简单的纯文本文件,在字节层面再无结构可言,处理这种文件有时费时又费力;文件一旦删除就再也无法恢复,对于用户的一些误操作没有任何补救措施;安全模型过于原始,使用起来复杂难耐,只有一个权限超大的root用户,一处被攻击... 查看全部[ 4.6 什么样的文化 ]
4.7 这一切的基础大师的阐释
大道理讲过千百遍它依然是大道理,一点都不实际。比较实际的东西就是:Unix文化并没有什么高深完美的科学理论作为依托。它跟其他工程领域一样,植根于丰富的实践经验,是经过不断的总结和融合而逐步形成的。它是自下而上的,不是自上而下的,更注重于实用性。你很难在所谓正规的方法学或标准中找到它们。它属于那种出自于人们本能的隐性知识,换句话说就是所谓的专业经验。它鼓励那种分轻重缓急和怀疑一切的态度,并促使你以幽默达观的心态对待这些。 Unix管道的发明人、Unix传统的奠基人之一Doug McIlroy从某些侧面对Unix文化做了一些阐释: (1)让每个程序就做好一件事。如果有新任务,就重新开始,不要往... 查看全部[ 4.7 这一切的基础大师的阐释 ]
9.1 日志和ReiserFS
有一天,身体问心:“我要是痛了,医生会给我治,你痛了谁给你治啊?”于是心说:“我只能自己给自己治。”也许是因为这样,每个人都有治疗自己心中伤痛的方法。喝酒、唱歌、发火、发疯、找人说话、跑马拉松,等等,等等。当年我上大学时,我们同宿舍的二哥就是喜欢跑马拉松,结果就有一个女孩天天看着他跑,至于接下来怎么样啦,我想你懂的。当然,还有人会逃避这种心里的痛,不过这是我认为最差的方法。我的方法,就是站在讲台上发疯,给大伙讲一些伪技术。一些比较“邪性”的东西。 话说有一种感动,叫内牛满面,有一种文件系统,根本不在磁盘上。这种文件系统就是大名顶顶的ram-based filesystem。实际上,在Linu... 查看全部[ 9.1 日志和ReiserFS ]
9.2 进程文件系统procfs
procfs之于Linux的重要程度就好比眼睛之于心。眼睛是心灵的窗口,直达心底;眼睛是心灵感知世界的大门,洞悉全局;眼睛是人与人之间心灵沟通的桥梁,展现彼此。 procfs是进程文件系统的缩写。这是一个伪文件系统(启动时动态生成的文件系统),用于用户空间通过内核访问进程信息。但是经过不断的演进,如今Linux提供的procfs已经不单单用于访问进程信息,还是一个用户空间与内核交换数据修改系统行为的接口。这个文件系统通常被挂接到/proc目录。 procfs并不是Linux的原创,它源自于UNIX世界,现在世上几乎所有类UNIX系统都提供。可能是历史太过悠久,如今好多人开始讨厌它,排挤它,... 查看全部[ 9.2 进程文件系统procfs ]
9.3 tmpfs——满足你对“时空”的双重渴望
前几天闲来无事翻微薄,有人写道:“曾经偷情被游街,如今二奶喊干爹;曾经撞人忙救人,如今撞人再杀人;曾经私情偷着干,如今淫乱存U盘;曾经献血为扶伤,如今慈善越重洋;曾经相好牵肚肠,如今小三炫富忙;曾经摩托都挺酷,如今地铁都追尾;曾经县长坐皮卡,如今少年开宝马;曾经精英成右派,如今牛逼全二代。”不禁感慨万千,这世道真是变了。 曾经内存比金子都贵,现在已经白菜价了。有时候我们在设计系统时,如果磁盘已经忙不过来了,完全可以让内存帮帮忙。不但不会有什么损失,整体执行效率几乎会有一个数量级的提升。tmpfs就是让你这么干的一个好帮手。 9.3.1 背景 在开始展开对tmpfs的论述之前,先要介绍一下... 查看全部[ 9.3 tmpfs——满足你对“时空”的双重渴望 ]
9.4 devfs和sysfs
devfs和sysfs它们来了,真的来了,一前一后来的,来得是那么突然,来得是那么悄无声息。一个脸色苍白,苍白得让人不寒而栗;一个目光深邃,深邃得让人顿觉谦卑。人们一直在谈论着它们,据说先来的已经死了,死得很透彻,是被它的门人杀死的,而且居然是后来者收买了它的门人,后来的现在还在收买其他门派的门人,正在觊觎“武林盟主”的地位。所有的事情就这么潜移默化地变化着,轮替着。一切看似那么平静,平静得已经让很多人开始摩拳擦掌。在这平静之中不知何时又要到来一场可怕的血雨腥风。 故事是这样开始的…… 9.4.1 devfs的由来 Linux,或者说类UNIX系统最“酷”的地方是,设备不是简单地隐藏在晦... 查看全部[ 9.4 devfs和sysfs ]
9.5 其他特种文件系统
都说知足者常乐,但是往往就有那么一些人,以发现不足为己任,以满足不足为乐趣。于是就有了四大发明、有了飞机大炮、有了UNIX、有了Linux、有了你我今天所面对的世界。 9.5.1 RelayFS 我们做技术的,大多数人都是喜欢买书的,而且买过的书大多都不看。还遭到了信奉“书非借不能读”的人嘲弄。但是在工作中就会发现,那些嘲笑我们只买不看的人终于体会到了书到用时方恨少的苦楚,很快就加入到了我们这类人的行列。其实工具也一样。 前面已经介绍过了,procfs和sysfs是用户空间和内核空间交换数据的接口,但是不满足的人们总是觉得它们不够给力。因为从内核向用户空间反馈大量数据时,无论使用proc... 查看全部[ 9.5 其他特种文件系统 ]
9.6 结束语
有关Linux特种文件系统的一些故事到此就算讲完了。类似devfs和sysfs这样的惊心动魄的江湖地位争夺战,在Linux世界无时无刻不在上演着。其实我不单单是希望大家通过对特种文件的了解而更明细地认识Linux,更希望的是通过这一个个案例,来展现Linux能够玉树常青的不二法则——新的系统并不是只为了做同样的事情比老的系统快一点,还应该允许我们用以前完全不可能的方法来处理事情,去感受Linux世界文化的深邃与博大。就像sysfs最终干掉了devfs。在Linux界是允许造反的,只要你能,我们就说:造反无罪,造反有理。... 查看全部[ 9.6 结束语 ]