一个人的角落,也许并没人会看到这里~~ 祝福你,工作顺心,学习快乐~

Linux就是这个范儿

1.4.7 致命的Linux命令 – Linux就是这个范儿

别以为我是在开玩笑。有些Linux命令轻则造成数据丢失,重则导致系统瘫痪。你看这位同学漫不经心,以root身份敲入了rm -rf /,强制删除 / 目录下的所有文件,这代价可是很惨痛的(相当于系统自杀)。

还有一个很好玩的例子,我用旺旺聊天的形式给你讲述:

小雪2012-08-25 15:28:10: 在你Linux系统上输入这串东西:(){ :|:& };

灰猫2012-08-25 15:28:34: 长得这么怪?

小雪2012-08-25 15:28:41: 试试看看是什么结果。谢了。

灰猫2012-08-25 15:28:44: 不好了。终端一直出现下面的提示:

	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable
	-bash: fork: retry: Resource temporarily unavailable

很惨啊。

小雪2012-08-25 15:29:02: 哈哈,真的很惨。

灰猫2012-08-25 15:29:21: Ctrl+C都是不管用的。

小雪2012-08-25 15:29:21: 即便退出这个终端也是没有用的。

灰猫2012-08-25 15:29:31: 最后全都是这个。

-bash: pipe error: Cannot allocate memory
-bash: pipe error: Cannot allocate memory

root用户搞不定,因为killall的速度受到了影响,只能重启机器了。

小雪2012-08-25 15:30:15:这就是著名fork炸弹。看来危害不小。

灰猫2012-08-25 15:30:34:别幸灾乐祸了。能告诉我什么原理吗?

小雪2012-08-25 15:31:43: 把:(){ :|:& };写成下面格式你就看懂了

:()
{
	:|:&
};

灰猫2012-08-25 15:32:13: 明白了。“:”函数里面定义操作是后台执行“:”函数重定向到“:”函数,“:”函数的递归调用。

小雪2012-08-25 15:32:15: 是滴。系统执行海量的进程直到死亡。

灰猫2012-08-25 15:32:43: 这样的代码不好分析,主要是因为不清楚“:”是可以做为函数名的。

小雪2012-08-25 15:33:12: Quite right。另外为了防止这个问题的出现,要限制赋予root权限的用户数量以及单用户的进程数。

灰猫2012-08-25 15:34:12: 哈哈。是的,拥有root权限的用户操作不慎很容易给系统造成破坏。

故事还没有结束。如何限制用户的进程数呢?我们可以在/etc/security/limits.conf文件末尾加入一行:

	*   hard   nproc  200

限制用户的进程数为200,但root用户不会受这个限制。

这个命令行还涉及shell脚本编程,我们将在后面的章节来学习。

Linux就是这个范儿 – 本书目录 

1.4.6 联机帮助——man很靠谱 – Linux就是这个范儿

遇到问题寻找帮助能加快解决问题的速度。在Linux系统上,有以下几个途径可以获得帮助:

1.         遇到问题,男人(man,其实是“手册”的简称)的帮助很靠谱。需要某个命令或者配置文件的帮助,就在终端输入:

	man 命令名

	man 配置文件

屏幕就会显示对应命令系统的帮助手册。输入“q”退出帮助浏览器。

2.         info 和 man 功能相似,但是包含更多的最新信息。

3.         使用“命令名 –help”得到一个简略容易消化的命令帮助。

4.         程序自带README文件或者其他帮助信息文件,例如在/usr/share/doc下的一些手册。

如何在man页中查找信息呢?浏览man页默认的工具是less。less的使用方法很简单。翻页用Space,查找用反斜杠“/”紧跟着正则表达式,用n查找下一个匹配项,用Shift+n查找前一个匹配项。如果这页里没有你感兴趣的,按Space翻到下页。更多的操作还是man一下less文档吧。

很多命令的man帮助页中涉及shell命令、系统调用和编程接口等多方面,而这些内容很可能会拥有相同的名字。例如“printf”,它既是shell命令,又是库函数。为了能够精确找到你需要的帮助信息,人们为它们进行了分类编号。比如3代表库函数,我们要使用这样的命令才能找到库函数printf的帮助信息:

	$ man 3 printf

否则的话,你得到的帮助信息是shell命令printf的帮助信息。可是man对帮助信息做了哪些分类,分别都用什么编号来代表的呢?这个问题我们不用管,第3章再说。当前为了解决这种分类问题我们有一个折中的办法,就是使用“-a”命令选项,它会把所有跟你给定的命令名有关的帮助信息都列出来。例如:

	$ man -a printf

慢慢看吧,如果觉得当前的信息不是你需要的,按“q”之后会显示另外一个分类的信息,直到找到自己需要的为止。当然,有些时候你可能一无所获,最大的可能就是你记错了关键字。

还有,帮助信息中的“SEE ALSO”经常是被遗忘的角落,但是我经常会在这里发现其他有用的命令或库函数,千万不要放过它。

Linux就是这个范儿 – 本书目录 

1.4.5 错误信息 – Linux就是这个范儿

	$ %boast
	bash: fg: %boast: No such job.

当命令执行成功的时候终端屏幕上不显示任何信息,但是当发生错误的时候它经常会以一定的形式汇报错误。上面我开了一个关于Linux错误信息提示的玩笑。boast是吹牛的意思。我在终端上敲入“%boast”后,终端返回错误提示“No such job”,意思是没有这样的工作。不同的命令返回的错误信息格式有所不同,但是经常有如下格式:

命令名: 执行内容: 错误信息

例如:

	$ rm jie

给出的错误返回是:

	rm: cannot remove 'jie': No such file or directory.

那究竟发生了什么情况?当rm命令要删除jie这个文件,jie这个文件不存在,产生了代号为2的错误。这个错误代号的意思就是找不到相应的文件或目录。错误代码就被自动翻译成No such file or directory。由于错误代码有限(大约有一百多种),有可能许多不同问题对应于同一个错误代码,所以理解要执行的命令和错误信息的关系很重要。得到错误信息,让我欢喜让我忧,喜的是知道发生什么样的错误,忧的是对错误信息有可能百思不得其解,不知道如何去解决,这时候就得凭经验了。

errno.h包含一个完整的基本错误代码列表。除此之外,其他一些头文件(.h)也定义了自己的一些错误代码。代码1列出了系统定义的所有错误代码及错误描述。

代码1:

#include <string.h>
#include <errno.h>
#include <stdio.h>
int main(intargc, char ** argv) {
	int i = 0;
	for(i = 0; i< 256; i++)
		printf ("errno.%02d is: %s\n", i, strerror(i));
	return 0;
}

编译此程序用命令:

	gcc -Wall strerror.c

执行程序:

	./a.out

这个程序的输出有点长,所以就不去浪费纸张了,你自己在电脑上看吧。

Linux就是这个范儿 – 本书目录 

1.4.4 快捷键 – Linux就是这个范儿

有位童鞋正在Linux系统上开发一个中文相似度匹配的项目,工作相当努力,已经达到了废寝忘食的地步,但是使用的TF-IDF[⑤]算法的计算速度还是不尽人意。这时候,他决定先停一停,换换思路,玩玩俄罗斯方块放松一下。突然老板走过来,他下意识地使用<Ctrl><Alt><d>快速隐藏桌面。还好有惊无险,没有被老板发觉在玩游戏,否则又需要一大堆的解释。老板拍了拍他的肩膀走了过去,随后他用<Ctrl><Alt><d>又恢复了原有功能的显示。

举这个好玩的例子可不是让你照着做,而是为了告诉你Linux系统提供了很多快捷键提高命令行使用的工作效率,减少键盘的敲打以及拼写错误。说几个比较实用的快捷键,见表1-2所示,其他的你自己去挖掘。

表 1-2

常用快捷键

说  明

<Tab>

在文本终端下,使用TAB自动完成命令的输入,或者显示所有的可选项。超好用!

<Shift><PgUp>

滚动文本终端输出。终端屏幕上一屏又一屏的提示信息,就可以用它向上翻滚查看这些信息

<Shift><PgDn>

回滚文本终端输出

<Ctrl><Alt><Delete>

文本终端下关机和重新启动

<Ctrl><Alt><Backspace>

关闭或重启X Window

<Ctrl>a

到正在输入的命令行的首部

<Ctrl>e

到正在输入的命令行的尾部

<Ctrl>c

终止当前进程

<Ctrl>s

停止终端传输

<Ctrl>p

上一条执行的命令

<Ctrl>n

下一条执行的命令,前提是执行过<Ctrl>p

<Ctrl>f

在当前命令输入中右移光标一个字符

<Ctrl>b

在当前命令输入中左移光标一个字符

<Alt>f

在当前命令输入中右移光标一个词

<Alt>b

在当前命令输入中左移光标一个词

<Ctrl>k

删除光标后的所有字符

<Ctrl>d

删除光标当前的字符

<Alt><Tab>

切换不同的程序窗口

<Alt><F1>

访问“开始”菜单

<Alt><鼠标左键>

拖曳并移动一个窗口

<Alt><PrintScreen>

把当前屏幕的快照存到剪贴板

<Ctrl><Alt><d>

哈哈,老板键。切换隐藏/显示桌面运行程序

 

使用快捷键太爽了!默认情况下,按TAB在bash中是可以自动补齐,但仅能自动补齐命令名和文件名。可是我们追求的目标是“更快、更高、更强”,那就安装bash-completion做个增强版的自动补齐吧。使用TAB键自动补齐几乎任何内容,包括参数、文件、目录甚至包名称等。安装方法很简单,下载到的包中包含一个bash-completion文件,将其放在/etc下。在/etc/bash.bashrc文件里加入可执行命令(这个操作需要root权限)。

	# Run bash completion code

	if [ -r /etc/bash_completion ]; then
	    # Source completion code.
	    . /etc/bash_completion
	fi

1.    更快……

举个例子。淘宝的预发环境中的Linux机器不允许直接登录。需要申请跳板机,通过跳板机才能登录预发机。在跳板机上,我们经常使用ssh 10.232.15.201操作命令,好麻烦呀。在/etc/hosts中我们加入一行“10.232.15.201 prerelease”。

然后我们使用complete -F _known_hosts ssh告诉ssh需要的主机名。一旦设置好了,我就可以通过敲[TAB]键完成主机名的输入:ssh p[TAB]。

另外你还可以定制私有命令的补齐功能,不过你需要自己编写shell脚本实现,然后把这个脚本放在/etc/bash_completion.d/下。在随后的章节,我们会学习shell脚本的编程。在学完之后,希望你会通过编写脚本产生自己的补齐功能。

2.    更高……

有的命令太长,那就把命令缩短。命令别名(alias)就起到这个作用。例如在SUSE版本中有个命令别名的文件(/etc/profile.d/alias.bash)。它里面定义了许多命令别名,例如alias ..='cd ..', 那么在终端上输入“..”就相当于输入了“cd ..”直接回到上级目录,方便不?

3.    更强……

在shell终端上还可以一下子运行多个命令,只需要用分号“;”把各个命令串起来就行:

[命令1];[命令2];[命令3]

不管执行的命令结果如何,就是勇往直前地冲呀杀呀,把这些命令最终执行掉。但是有时候,这些命令之间是有关联的,就需要改改这种傻愣愣的工作方式。我们可以用“&&”把命令连接起来,只有前一个命令执行成功才执行下一个命令:

[命令1]&&[命令2]&&[命令3]

如果需要等前一个命令执行失败才执行下一个命令,则要使用“||”把命令连接起来:

[命令1]||[命令2]||[命令3]

哎,使用命令行的技巧还真不少,我们可以考虑出版一本专门讲述Linux命令行的参考书了:)

Linux就是这个范儿 – 本书目录 


[⑤] TF-IDF(term frequency-inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一个字词对于文件集或语料库中的一份文件的重要程度。

1.4.3 基础命令的操作 – Linux就是这个范儿

提及Linux基本命令,先给你讲述一个浪漫的故事。

曾经有个男孩很喜欢一个女孩,可是不敢表白。他想了一个办法,在Linux终端上输入:

	$ echo“这周六下午2:30,能在如嘉咖啡馆一起喝咖啡吗?”> love.txt

然后回车。接着他找来那张他喜欢的鼓浪屿图片(pic.png),使用命令:

	$ cat pic.png love.txt > pic1.png

1.4.2 文本和图形的切换 – Linux就是这个范儿

方才我们介绍的方法是目前最常用的在桌面环境下执行命令的方法,但是也有很多有“洁癖”的人喜欢使用纯粹的文本终端,这就需要进行图形和文本切换了,或者干脆就关闭图形界面。我们先搞定前者,后者会在后面的章节做十分详细的介绍。

要在文本和图形界面之间来回切换非常简单,只需要使用快捷键<Ctrl><Alt><F1>~ <F6>来回切换就行,具体什么效果大家可以自己实验,这个地方不同的Linux发行版会有不同的设定,所以本书就不好做定论。一般<Crtl><Alt><F1>代表图形界面,而剩下的5组快捷键对应5个不同的文本终端,我们推荐的CentOS就是这种设定。还有的设定是<Ctrl><Alt><F7>是图形界面,其他6组快捷键是6个不同的文本终端。

一般不建议使用这种方法来操作Linux,除非你有强烈的“洁癖”或遇到有“洁癖”的系统管理员。因为这种方法你能够使用到的独立文本终端最多只有6个。而前面介绍的在图形界面中使用终端模拟器的方法,则没有文本终端数量的限制。对于一个Linux老手来讲,文本终端永远都是多多益善的。很快你们就会有这种感觉了。

Linux就是这个范儿 – 本书目录 

1.4.1 开始执行命令 – Linux就是这个范儿

用户和系统不是直接打交道的,它们中间有个名字叫shell的联系人。我们从键盘中输入命令给shell,shell再把它交给操作系统去执行。

从哪里开始输入命令呢?当然你可以在字符界面输入命令(暂时先放放,稍后再看)。Linux系统还提供一个叫终端模拟器的程序。这个程序打开一个窗口,让我们与shell交流。Linux系统上的各种软件向来是百花齐放,模拟器终端也不例外,例如gnome-terminal、konsole、xterm、rxvt、kvt、nxterm和eterm等,而大多数Linux发行版会同时支持几种。

使用过Windows操作系统的人,在登录Linux桌面系统后,应该也能轻松地从菜单中选择启动终端的图标,点击就可以进入终端模拟器。当然你也可以在文件浏览器中找到叫“konsole”(KDE桌面)或“gnome-terminal”(GNOME桌面)的程序双击执行以打开终端窗口。更有意思的是你可以打开任意多个窗口,每个窗口给你一个shell会话。你从中选择了一个窗口开始尝试输入这个命令:

	$ cp /etc/resolv.conf /etc/resolv.conf.bak
	cp: cannot create regular file '/etc/resolv.conf.bak': Permission denied

太欺负人了吧,这么简单的命令都不让偶用。

你注意到没有,shell命令提示符是$,这意味着什么?这意味着你是普通用户,不是超级用户,你没有管理员权限。如果你是拥有管理员权限的root用户,提示符就变成#,你就可以在系统上做增加、删除和修改文件的操作。

Linux就是这个范儿 – 本书目录 

1.4 返璞归真的命令行 – Linux就是这个范儿

有一种说法,现代计算机不是靠电力驱动,而是靠“鼠标”。多少应用程序的界面都是需要移动和点击鼠标来执行的。计算机本来的用意是把人类从反复单调的工作中解放出来,但摆在我们身边的残酷现实是我们每个人每天不得不反复单调地移动和点击鼠标,以确保养家糊口的工作能够顺利正确地完成。

别叹气,存在另一个世界,那就是命令行,让你暂时远离鼠标。对那些苦哈哈的程序猿来讲,这也许是另一种情调的工作方式。我们突然之间拥有了另一种意想不到的收获,例如我想看看用户目录下的文件大小,然后按升序排列产生个报表。如果用C/C++完成这项工作,至少得用好几十行代码,但是用一句命令行就能完成上面的功能。

	du -s * | sort -nr > $HOME/space_report.txt

命令行有它的存在价值吧。还有把 Linux 桌面操作录制成一段视频,想起来就是一件复杂的任务,在Linux上用一句命令就能轻松搞定。

	ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

卖个关子,这个命令会在第18章作详细解释。

估计你可能会迫不及待地想要实验一下刚才所提到的命令,但是苦于现在都流行的图形界面,我们推荐的CentOS默认也进入了图形界面,看来要想做点实验还是有点难度的。不过不用着急,Linux的老手们一定是要命令行的,所以想通过键盘输入命令,一个合格的Linux发行版一定会做得十分方便,只是要先搞清楚一些概念。

Linux就是这个范儿 – 本书目录 

1.3.4 LXDE——更轻,同样精悍 – Linux就是这个范儿

如果对小巧精悍的桌面环境很有爱的话,那么LXDE则是另外一个十分值得推荐的选择。如果你是一个民族主义者,那么一定会十分喜爱LXDE,因为它完全是我们中国人开发的,虽然他们都是来自台湾省(这是我国领土不可分割的部分)。

LXDE相对于前面三个桌面环境会显得相当地年轻。它在2006年还只是一个文件管理器,后来才慢慢发展成为一个功能齐全的桌面环境。虽然LXDE是2006年的东西,但是它对系统的要求却低得惊人,甚至在1999年的老电脑上不用3D加速也能流畅地运行。所以,在上网本、MID等低功耗移动电脑上拥有比较广泛的应用。这也十分对得起它的名字——Lightweight X11 Desktop Environment,轻量级X11桌面环境,简称LXDE。

LXDE与前面三个桌面环境不同,它没有自己开发WM,而是选用了Openbox做为默认WM。这种选择使得它不必重新造轮子,还始终能够保持十分轻量。而且Openbox本身也是十分轻量的。这两者的强强组合,促成了LXDE的无比强大。其实在Linux世界,你所见到的大多数复杂软件系统,都是这种强强组合的结果,像KDE、GNOME、XFCE这样的一应俱全的软件套件是非常罕见的。

LXDE同样是采用GTK+开发的,由此可见GTK+在开源图形领域的地位是多么地重要。单从这几方面的应用,几乎就可以让初学者确定到底应该学些什么了。但是我更加喜欢Qt,至于具体是为什么,也就是萝卜青菜的差别。

Linux就是这个范儿 – 本书目录 

1.3.3 XFCE——轻量、简单、高效 – Linux就是这个范儿

KDE和GNOME虽然雍容华贵,但是也恰恰就有些太过“臃容”,对于喜欢“轻淡”口味或只有“小马力战车”的屌丝们,XFCE是一个相当不错的选择。

XFCE是一个轻量级的Linux或类Unix的桌面系统。XFCE的设计目的就是:快速加载并用来执行程序,且占用系统资源少。从实际的使用效果上看,XFCE也的确做到了这一点。也正是因为如此,作为一个拥有很长历史(其源自1996年)的桌面环境,能够在很多U盘Linux中见到它的身影。

XFCE是使用率仅次于KDE和GNOME的桌面环境。各大发行版基本都会将其作为可选桌面提供。甚至一些发行版,如Xubuntu、SAM Linux Desktop等已经开始将XFCE作为默认桌面了。
XFCE与GNOME一样,也是基于GTK+开发的,这首先保证了不会有任何授权问题。另外,XFCE不仅可以作为桌面环境使用,还能够作为程序库来开发第三方程序,比如文字编辑器Mousepad。

XFCE肯定是没有办法与GNOME和KDE相比的,但是简单和高效是它的特点,如果你已经修炼成了一个Linux行家里手,那么XFCE将会是你梦寐以求的选择。具体为什么,读完这本书你就知道了。


Linux就是这个范儿 – 本书目录 

1.3.2 GNOME不可磨灭的经典 – Linux就是这个范儿

在KDE受版权困扰和没有新版可用的时候,陪伴在人们身边的是GNOME桌面环境。虽然GNOME3使得GNOME从能用变得不能用了,但是GNOME2则依然是不可磨灭的经典。

GNOME是GNU 网络对象模型环境——The GNU Network Object Model Environment的英文缩写。它是GNU计划的一部分,开放源码运动的重要组成部分。目标是基于自由软件,为Unix或者类Unix操作系统构造一个功能完善、操作简单以及界面友好的桌面环境,它是GNU计划的正式桌面。

如果说有那么一个桌面环境是为Linux而生的,那么就非GNOME莫属了,它被现代的大多数Linux发行版作为默认桌面使用。因为Linux是类Unix的缘故,GNOME虽出于Linux但胜于Linux,已经能够运行于各种类Unix系统了,所以就有了前面对GNOME的描述。

GNOME主要是为了当初使用没有采用GPL授权的Qt的KDE而出现的。GIMP Toolkit(GTK+,本书后面的章节会详细介绍)就成了Qt的替代者,担当GNOME桌面的基础。GTK+使用LGPL许可证授权,允许链接到此库的软件(例如GNOME的应用程序)使用任意的许可协议。GNOME的应用程序通常采用GPL许可证授权。

GNOME本身是使用C语言编程的,但并不受限于C这种单一语言。GNOME使用CORBA(Common Object Request Broker Architecture)让各程序组件能够彼此协作,而又不需要考虑它们是何种语言所写成的,甚至是在何种系统上执行的都不用考虑。

GNOME提供了两个东西。一是GNOME桌面环境,一个对最终用户来说符合直觉并十分吸引人的桌面。GNOME3做到了吸引人,但是我总觉得它不符合我的直觉,也就是我总是找不到我要找的东西(可能是智商问题)。二是GNOME开发平台,一个能使开发的应用程序与桌面其他部分集成的可扩展框架。这点GNOME做得相当好,CORBA就是非常典型的例子。

在GNOME之下还有很多子计划,它们不都是包含在GNOME中一同发布的。一些基于概念的纯粹实验性的项目,等稳定后会加入GNOME;还有一些是正在完善中,以便能够直接加入的,例如GNOME存储和D-BUS。

目前的主流发行版,如RHEL、CentOS和Ubuntu等都是以GNOME为默认桌面的,操作手感更像Mac OS X,但是属于完全不同的风格。这是绝对原汁原味的GNU。

Linux就是这个范儿 – 本书目录 

1.3.1 KDE初学者的首选 – Linux就是这个范儿

KDE是由德国人Matthias Ettrich于1996年就读于图宾根大学时开始的一个计划。当时的Unix桌面没有一个应用程序的外观、感受或工作方式与其他程序一样。于是Matthias Ettrich就建议不仅是创建一套应用程序,而是要创建一个桌面环境,能让用户拥有相同的外观、感受和工作方式,而且这个桌面应该是非常容易使用的。他的这个想法得到了很多人的支持,从此KDE计划就诞生了。

可能有人会疑惑,KDE是给Unix的,似乎跟Linux没有什么关系,为什么这本书要介绍它呢?其实不单单KDE是这样,剩下的三个桌面环境也是这样。甚至在这个星球上完全针对Linux编写的软件也是并不多的,那些在Linux下能够获得的软件大多不是针对Linux开发的。它们是针对Unix系统的,而Linux属于类Unix系统,所以就毫无歉意地坐享了这些成果。这就是Linux的优势,也是大家学习Linux的优势。学会了Linux,几乎就等同于学会了Unix或类Unix系统,它们在这个星球的应用范围就从来没有被Windows超越过。本书的内容也是如此,只有少数章节是专门针对Linux特性所特别设置的,大多数知识都是通用且极具实用价值的。好了,闲话不多说,我们继续介绍KDE。

追究KDE这个名字的由来是没有实际意义的,但是我们需要知道它是完全采用Qt程序库(后面的章节会有详细介绍)开发的。由于Qt多舛的命运[②],注定了KDE同样会拥有风雨飘摇的艰辛历程。

虽然Qt是开放源代码的软件,但是在KDE早期的时候Qt并非是自由软件授权,这与KDE的自由软件授权相冲突,所以很多人会担心惹上版权麻烦,尽量避免使用KDE,这成为了KDE初期推广的障碍。

很庆幸的是1998年11月之后,Qt程序库所属的Trolltech公司发布了第一份自由软件许可Q Public License(QPL)的Qt程序库授权。同年不久,KDE Free Qt基金会[③]保证:若Trolltech在任意连续12个月内没有发布新的自由版本,那么Qt程序库将更改为基于BSD许可证的授权进行发布。但是很多人依然争论着,认为QPL授权与GPL(万恶的“鸡屁儿”)上的某些条款不相容。这导致了Red Hat公司始终无法将KDE当作默认桌面,而Mandriva Linux则趁此时机凭借KDE席卷了欧洲市场。

直到2000年9月,一个基于GPL协议的Qt程序库发布,大部分用户方才对KDE生出信心。此时的KDE已经日臻完善,国内的各大Linux发行版都纷纷采用KDE作为其默认桌面,甚至出现了“阳春白雪[④]”这样专门针对KDE的汉化美化套件。

2008年是一个非常重要的年景,奥运会第一次在中国召开,Qt升级到了4.0,并且采用了更加宽泛的LGPL授权(仅Qt4以后的版本)。但是KDE的好日子到头了。Qt4的LGPL授权固然招人喜欢,但是Qt4相对于Qt3做了较大幅度的调整,如果KDE转投Qt4,则必须做较大改动甚至重写。KDE的开发者们抱着有困难要上,没有困难制造困难也要上的必死决心毅然地转投Qt4的怀抱。这导致了很长一段时间人们没有新的KDE版本使用,那些不断放出的KDE4的各种版本几乎个个都是花瓶,中看不中用。直到KDE 4.2版本的发布,才彻底稳定了下来。于是就在Linux界流传了一段笑话:KDE从能用到不能用再到能用,之后GNOME从能用到不能用。至于GNOME的故事我们稍后再说,KDE的故事还在继续。

经过Qt3到Qt4转变的这么一折腾,损失大量粉丝是在所难免的了,而祸总是不单行的。就在KDE4准备发力接受市场的挑战之际,Qt的所属公司Trolltech被大名鼎鼎的Nokia收购了。原以为能够如虎添翼一下,可万没想到的是Nokia又是一个倒霉蛋,倒霉到不得不去抱微软的大腿。结果是大腿没等抱稳,就把Qt给弄丢了,出售给了Digia公司。但是不管怎么样,由于Qt是LGPL授权的,所以它就是属于全人类的了,我们能够永远都有免费的Qt使用。

Qt其实是一个非常优秀的C++跨平台图形界面开发库,几乎可以媲美Java的跨平台特性。不同的是Java能够一次编译到处运行,而Qt是可以一次编码到处编译。也正因为如此,KDE已经被移植到了几乎所有硬件和操作系统平台上。现在的KDE已经不单单是一个桌面环境,它几乎就是基于Qt开发的程序的庞大集合,是Qt的一个超级平台。这里拥有功能异常丰富的应用,包括各种跨平台组件、办公套件和开发套件等,几乎可以找到任何Qt应用的样板。而且从任何角度来看,Qt都是用C++开发跨平台图形应用的首选程序库,最新的WPS选择它就是非常好的佐证。对于学习和掌握Qt,KDE是非常理想的平台。

需要注意,如果你根据我们的推荐选择安装了CentOS,KDE是选装部分,需要在安装的时候选中它才可以,否则就需要根据下一章所介绍的内容去手动安装了。如果你选择的是SUSE,则默认就可以使用KDE了。我们推荐初学Linux的用户选择KDE,它的操作习惯与Windows更加接近。

Linux就是这个范儿 – 本书目录 


[②] 1991年由TrollTech公司开发,于2008年被Nokia所收购,2012年又卖给了Digia公司。曾数次修改授权方式。

[③] 就是保证Qt和KDE在任何情况下都是自由软件的组织,最初有TrollTech和KDE开发者共同创立。

[④] 2001年沈阳玳娜软件有限公司为了推动中文Linux的普及,针对Red Hat Linux 7.2推出的一款汉化美化套件,其中包括中文输入法和KDE的汉化美化部分。属于死在沙滩上的优秀前辈。

1.3 主流桌面环境 – Linux就是这个范儿

Linux强大的适应性、创新性以及开放性在它的桌面环境方面得到了十分充盈的展现。目前比较流行的就有GNOME、KDE、XFCE和LXDE,它们并称为Linux图形界面四杰,个个美轮美奂,风格迥异。它们并不是单纯的单一软件,而是一套软件集合,比如WM、DM、应用框架库等。最近有传言称Linus Torvalds[ Linux之父啊,本书的读者要是不认识他是有些说不过去的。]大神在Google+上大骂GNOME3“不能容忍的凌乱”,并改投XFCE的怀抱。不管真假,至少我认为GNOME3是很考验智商的。其实这玩意没有好坏之分,只是口味不同,自己用着舒坦的就是最好的,是不是?

本书并不准备截图给各位欣赏,原因主要有三:一是印图成本太高,我也是屌丝一名,知道挣点钱不容易;二是大家可以通过Baidu或Google查询到非常多的截图,直接在电脑上看知道效果会更好;三是学习Linux最需要亲力亲为持之以恒,我们不希望浪费你去主动查询资料的好机会。望能够理解我们的良苦用心

Linux就是这个范儿 – 本书目录 

1.2.2 架构设计 - Linux就是这个范儿

其实Linux系统的图形界面设计还是非常清晰的。让大家觉得乱的原因可能是有两个:一是我的写作水平有点问题,二是涉及的新鲜事儿太多。我总认为第一点是主要因素,所以干脆不写了,画个图给大家看看。下图展示了Linux界面的基本结构,同时提供了Windows图形界面基本结构进行对比。自我感觉画的比说的要好。

当结构清晰的时候,问题随之就会来,不知道你发现问题了没有?最大的问题就是从结构上看Linux的图形界面效率肯定比Windows的要差。因为Linux需要很多层的软件互相协作才能实现图形界面,而Windows则相当直接,不拖泥带水的就搞定了图形界面。在计算机科学领域很少有实践结果与理论预期出现相反结论的情况,但是,可是,可但是,但可是……小概率事件还是会发生的,偏偏这个就是典型的一例。众所周知的Mac OS X的图形效果是目前任何操作系统都无法比拟的,自然也包括Windows的任何版本。而Mac OS X是一种类Unix操作系统,采用的恰恰就是这种架构。只是Mac OS X的“X协议”与Linux所采用的X协议有很大不同,前者是二进制的,后者使用的是纯文本。从纯粹学术理论上来讲,纯文本虽然在效率上会有些损失,但在其他方面会更具优势。这个问题在本书的第4章将会继续探讨,这里就先说这么多。

正因为Linux的图形界面得益于这种优良的架构设计,虽然在效率上不及Mac OS X那样优秀,但是图像效果和功能的丰富程度绝对不会比Windows差,至少它拥有很多种桌面环境可以选择,可以说每一种都会让你有完全不一样的体验。看惯了Windows的“老气横秋”,不妨去感受一下Linux的小清新吧!

Linux就是这个范儿 – 本书目录 

1.2.1 没有图形的图形 - Linux就是这个范儿

1.2 不一样的图形操作

几乎所有Linux的新用户都会认为Linux的图形界面是相当地绚丽又多彩。因为这毕竟是一种全新的体验,那种超脱Windows俗套的快感就会油然而生。对于刚刚翻开这本书的人来说,如果对Linux是抱有这样认识的,那就太棒了,因为咱们又多了一个洗脑的对象了:P。此时此刻,真正的亲密接触就要开始啦……

1.2.1 没有图形的图形

虽然Linux的图形界面美轮美奂,但是有一个秘密却不得不告诉你:Linux本身是没有图形界面的。不管你信还是不信,事实就是这个样子。这么说的原因并不是因为Linux只是一个内核,其实所有类UNIX操作系统本身都没有图形用户界面。

那为什么我们能通过图形用户界面来使用Linux或者其他类UNIX操作系统呢?原因是有一个软件提供了这样的功能。是不是觉得很怪异?如果你有使用DOS和Windows 3.2 的经验,就一点都不奇怪了。因为那个时候Windows 3.2实际上就是一个DOS上的软件。而且我们所熟知的图形化操作系统Windows,直到Windows 95开始才能算得上是真正意义的操作系统。Linux上提供这个功能的软件以前是XFree86,现在是xorg(官方写法是X.Org,为了方便通常写作xorg)。虽然这两个软件名字上差别有些大,但实际上是一个软件的不同分支。1992~2004年间就只有XFree86,且跟Linux内核一样,以GPL许可证发行。但是2004年就发生了变化,XFree86的开发商XFree86? Project公司改变了许可证。这引起了GNU社区的极大不满,于是从XFree86 4.4 RC2衍生出了xorg。目前几乎所有开源的类Unix操作系统使用的都是xorg,让XFree86? Project抱着它的XFree86自己慢慢过吧:)

可能有些人会觉得奇怪。因为只听过有人在争论到底是KDE好还是GNOME好,并没有听说有xorg这东西,而且还有人说Unix的窗口系统是X提供的。那么X和xorg是什么关系呢?KDE、GNOME跟它们又是什么关系呢?嗯,这些的确是很好的问题,接下来就解答一下。

首先,X不是什么具体的软件,它是一种协议,跟我们平常所耳熟能详的那些什么HTTP协议、SOAP协议等是一样的。而xorg则是实现X协议的服务器软件,这跟实现HTTP协议的Apache是相同的概念。大家都知道Apache是可以通过HTTP协议来提供Web服务的,那么xorg通过X协议来提供什么服务呢?答案是图形用户界面服务。Apache的客户端请求Apache得到的结果是HTML内容,而xorg的客户端请求xorg的结果则是向屏幕上画图。它们之间还有一个很大的不同就是Apache只能被动地接受客户端请求,而xorg还需要主动将当前键盘按键和鼠标位置等信息通知给客户端。所以,Linux上的那些拥有图形用户界面的软件实际上都是xorg的客户端,它们利用X协议让xorg在屏幕上画出窗口或通过xorg获得键盘和鼠标事件。当然,为了运行这些软件也就需要一个前提,xorg这个服务,也就是通常所说的X服务器,必须是启动的。现代大多数Linux发行版的默认安装都是自动支持图形用户界面的,也就是说它们会在系统启动之后自动执行xorg。

可能有些人会意识到,如果系统中只有xorg是不可能有任何图形界面供大家使用的,至少还需要有个X客户端程序。而且这个X客户端程序还有一个专有名称——窗口管理器,英文叫做Window Manager,简称WM。WM也不是一个具体的软件,而是一类软件。诸如KDE、GNOME这些就是包括各自的窗口管理器,也有一些单独的窗口管理器,如FVWM、Openbox、IceWM等。它们控制窗口外观、位置和提供用户去操作这些窗口程序的方法。所以不同的窗口管理器会有不同的使用习惯。如果你当前使用的Linux系统没有配置成默认使用图形用户界面的话,可以使用命令:

$ startx

来启动xorg和默认的WM。对于Cent OS 6.4来说,默认的WM应该是GNOME的Metacity窗口管理器(KDE的是KWin),而且默认情况下是使用图形用户界面的。

对于那些默认使用图形用户界面的Linux系统,还有一个十分重要的X客户端需要启动,就是显示管理器,英文叫做Display Manager,简称DM。这个是做什么的呢?它是专门负责图形界面的用户登录问题的。也就是说,系统启动之后第一个要启动的X客户端程序就应该是DM,而且没有人能关闭掉它。(你能猜到为什么要这样吗?)DM也是一类软件,具体的应该是XDM、KDM或GDM等。

好了,有关Linux图形用户界面的介绍到这里就差不多了,更深入的内容我们留在后面吧。现在我们要谈论另外一个话题,就是Linux怎么会把它的图形界面设计得这么乱!

Linux就是这个范儿 – 本书目录 

1.1.4 登录系统 - Linux就是这个范儿

Linux与Windows有一个很大的不同就是很有可能你安装的Linux启动之后没有启动图形用户界面(刚刚安装完CentOS 6.4的人应该不会遇到这种情况)。这个时候你就必须得输入用户名和密码才能继续使用。即便你的Linux启动了图形界面,也很少有发行版让你能够自动登录系统。所以,你一定要搞清楚你的用户名和密码。虽然有人会觉得我这样提醒似乎有些弱智,但是的确有很多人忘记了给自己刚刚安装的Linux设置了什么密码。尽管本书会告诉你如何在这种情况下找回密码,但是在现在这个阶段,一旦有这种事情发生,那么你最好还是重新安装吧!

Linux的用户被划分为根用户和普通用户两种。其中根用户是系统内置用户,用户名永远都是root,所以也叫root用户。Linux的root用户与Windows的administrator用户是一样的,都拥有系统的最高控制权。普通用户一般是用户自己定义的,所以没有什么特别的权限。大家在使用Windows的时候大多数都会选择直接使用administrator用户,这是非常不好的习惯,也是Windows下病毒泛滥的推手之一。在Linux下不要随意使用root用户,因为它的权限大到能够自杀的地步。所以很多发行版,比如我们推荐的CentOS在图形界面登录时,并不会提示有root用户存在。要使用root登录,必须明确输入这个用户名。

我们提供这部分内容其实是为另外一些人准备的。当然,你可能就是其中一员。他们在安装Linux系统的时候,并没有给自己的系统添加任何普通用户,如果他/她不知道还有root的时候,可能死活都登录不了系统。大家不要笑,这样的大有人在。我在第一次使用Linux的时候就这样,结果反复安装了3遍都没正常进入系统,最后经“高人”指点才解决问题:_(

当你正常登录Linux系统后,就可以尝试这个对你来说还十分新鲜的玩意儿了。如果你的电脑没有什么特殊的硬件的话,应该可以上网、聊天、看电影了……

Linux就是这个范儿 - 本书目录 

1.1.3 安装系统 - Linux就是这个范儿

到哪里去获得CentOS或RHEL,乃至其他Linux发行版呢?问Google或者百度好了。我不会像其他书籍那样提供一大堆URL列表,总感觉这样做是在辱没大家的智商。可能比较麻烦的事情是如何规划磁盘,本书的第3章会深入地探讨这个问题。那么现在这个阶段只要按照系统默认的安装设置就行了。如果你还想让Linux与Windows共存,只需要使用分区工具留下几十个GB的未分区的磁盘空间就行了,CentOS的安装程序可以自动使用你特意留下的空间。当然,安装的时候一定要慎重,看清楚提示,不要做一些蠢事。此外,我不是很建议你的Linux与Windows共存,还是在虚拟机上运行Windows吧(具体怎么弄我后面会告诉你)。

一个比较好的建议是使用64位版本,毕竟现在已经是21世纪又过了10多年了,老掉牙的32位系统应该在坟墓里歇息了!到本书截稿为止,最新版本的CentOS是6.4。为了安装方便,最好下载它的DVD镜像,前提是你安装的不是“假宽带”。

为了方便现在身边没有电脑的人能够尽早体验到Linux系统的一些魅力,这里我们准备了一些截图来讲述一下CentOS 6.4的安装过程,以期能够图文并茂地让你对Linux有一个好印象。出于成本考虑,当然也是为了帮助你省钱,我不打算使用彩色图片。但是即便是黑白二色,依然无法掩盖Linux系统的美。不过不要高兴得太早,你若想在安装CentOS 6.4的时候与我所描述的内容相符,那么必须保证你的机器内存大于628M,因为低于这个要求不会启动图形安装模式。幸运的是,文本安装模式不支持自定义分区,也不支持自定义软件包,这使得安装过程十分简洁,也造成了我没得可讲的境地。而不幸的是你也无法得到拥有图形环境的Linux系统。不过我倒十分希望你有这“下场”,因为在我看来只有坚持使用命令行才能学好Linux。

CentOS 6.4系统镜像有两个,只需要下载第一个镜像就能完成安装。第二个镜像是一些附加的软件包,基本上就没什么用。因为我们安装新的软件基本上都是从“云端”下载的,所以第二个镜像你都没有理由下载它。

接下来的步骤就是刻盘、启动和引导了,如果没有问题,应该出现这样的界面:

 

图1.1

这个界面展示了5个功能让你选,如果1分钟内你选择不出来,它就帮你选。选谁呢?选第一个,因为99.99%的人都会选这个。其他的功能我就不介绍了,因为当你成为那万分之一之后,基本上都懒得理我了,我还费什么事呢?

一分钟不用等啦,直接按回车,应该出现这样的界面:

图1.2

 

这是要检测一下安装介质是不是有损坏。对于时间比较宽裕的同学可以测测,测测更健康嘛(第二个镜像就必须得下载了)。如果你认为浪费时间就等于浪费生命,那就选Skip吧。

不管你是选择检测还是选择跳过,最终你都要进入这个界面:

 

图1.3

 

没啥实际意义,Next继续。

图1.4

 

这里是干什么的,大家应该懂的,我是选择母语的。Next继续。

图1.5

这里是让你选择你的键盘类型,在中国选择美国英语式就行了,别的样式的键盘估计你不熟悉。默认情况下也就是这样给你选的,所以直接下一步就行了。

图1.6

这个就是让你选择使用的磁盘类型,基本没别的选择,99.9999%的人都不用选择,就是这个默认的基本存储设备。别的那些东西,估计这辈子你都无缘见到,所以下一步就行了。

 

图1.7

 

这里设置主机名,也就是给你的电脑起个名字。要是没啥好名字,用这个默认的也是不错的。另外,这个地方可以进行一下网络配置,感兴趣的同学可以点开看看。如果觉得自己还不太靠谱,那就下一步好了。

 

 

这里确定你的时区。还要告诉你一个秘密:在这个星球上别的国家是不知道有“北京时间”的,但是他们都知道有“上海时间”。有些人是不是要自豪一下呢?

输入管理员密码,尽量弄复杂点。当然,你一定要用你老婆的生日我也没办法不是?

这里有这么多的选项,我们认为最有用的就是第一项“使用所有空间”了,但是你现在未必有胆量这样干。所以,如果之前给Linux预留空间了,就选择“使用剩余空间”,或者使用“创建自定义布局”也行。

“自定义布局”的界面是这样的:

我们划定的磁盘分区就是上图这样,虽然不是很符合Linux的设计思路,但是操作起来比较简单。作为初学者就这样好了,反正第3章会告诉你做Linux磁盘分区的技巧。

没什么能让你设置的,下一步就行了。

 

来到这里就是定制你的Linux系统要安装哪些套件。默认的是“Minimal”,只是装个基本系统。我们推荐你选择“Desktop”,这样你就有图形界面的Linux用了。下一步就是安装过程了……

你不再有点按“下一步”的机会了,等待的结果就是最后的成功。

到了这个阶段,Linux已经进驻你的电脑了,重新引导就可以开始享用了!第一次引导的时候是要进行系统初始化设置的,也是非常简单的,基本上一路“下一步”就能搞定。

Linux就是这个范儿 - 本书目录 

1.1.2 选择哪个发行版 - Linux就是这个范儿

1.1.2 选择哪个发行版

接下来我们将面临一个更为麻烦的问题,就是到底应该选择哪个Linux发行版。因为Linux的发行版实在太多了,用多如牛毛来形容一点都不夸张。可以想象,在牛毛中要选择出毛色最正、长短最合适、粗细最均匀的一根是多么纠结的事情啊。我们现在就要做这件事情,还要做好它!

就目前的情形看,Linux发行版可以分为三个主要的分支:RedHat、Slackware和Debian。每一个分支都拥有一个最具代表性的商业服务器级的发行版,它们是:Red Hat Enterprise Linux,简称RHEL;SUSE Linux Enterprise,简称SUSE;Ubuntu Server,简称Ubuntu。

看似好难选择的样子,但实际上也没什么,不管是谁家的Linux发行版,都不会有本质的区别。因为Linux本身就不是一个完整的系统,它实际上只是一个内核。所谓的发行版只不过是给这个内核加上一堆应用程序而攒成的系统。而且这些应用程序很大一部分都是来源于GNU社区,代码都是一样的,能有什么差别呢?

虽然本质上没有什么不同,但是不同的发行版在细节上还是有一些差别的。这主要体现在管理工具的选用上。由于开源软件的绝对自由性,具有相同功能的系统管理类软件可以有很多种,不同的发行版可能会对某种特性有偏好。有些实力比较强大的发行商,比如Red Hat,自己也会为开源社区贡献很多这类软件,它的发行版自然也会首选自家的产品。当然,其他发行版也可以采用Red Hat开发的管理软件,实际上很多发行版也是这么做的。

前面还说到发行版的分支,但是具体分支的归属并不取决于是否使用相同的系统管理工具。所谓的分支在软件层面上并没有十分严格的界限,只是这三个分支是历史最为悠久的发行版,而后续诞生的这些发行版大多都是从修改它们其中一种而发展起来的。实际上很多到目前为止已经跟其原有分支没有任何关联了,比如SUSE Linux已经跟Slackware没有任何联系了,但是最初的SUSE Linux是从Slackware修改而来的,所以现在依然认为它属于Slackware分支。现在,不同的分支之间互相也有借鉴,取长补短,所以分支概念在当前的发行版中越来越模糊了。现在比较清晰的是软件安装方法的不同,有些使用rpm,有些使用deb,有些甚至直接采用源代码。当然,这样的差别只有在使用不同安装方法的发行版之间才能感觉到。在日常使用中,Linux就是Linux,跟发行版没什么关系。

花费了这么大的篇幅,依然没有讲清楚到底该选择哪个发行版,我感觉有点对不住各位。那么接下来就解决这个实际问题。大家可能有所察觉,我所列举的这些发行版有些人根本都没有听说过,现在流行的都是什么Fedora、Ubuntu。的确,如果你就是想自己装个Linux玩,它们都是很好的选择。但是我们都是实用主义者,同时还要排除一下个人偏好,所以从选择哪个发行版更适合找到好工作这个角度出发就比较靠谱了。比较理想的选择应该是——CentOS。

你绝对没看错,也不是我的脑袋让电梯夹了而语无伦次。虽然这之前完全没有提到过CentOS,但是当你知道它实际上是RHEL的一个克隆之后,就会稍微地理解我推荐它的原因了。

RHEL由Red Hat发行,可以说系出名门,也是目前被众多品牌厂商支持得最为完善的Linux发行版。当然,SUSE和Ubuntu也未见得差到哪里,但是RHEL还有另外一个优势,就是对KVM虚拟机的支持。很多大型互联网公司为了充分利用服务器的硬件资源,都会大量采用虚拟机技术。而KVM的很多开发和测试工作都是在RHEL上进行的。这也导致了很多大型互联网公司都选择了RHEL作为其主要的服务器系统。既然RHEL这么优秀且又是大型互联网公司的选择,那么我们直接选择RHEL好了,为什么要选择它的克隆——CentOS呢?

原因非常简单,RHEL要收费。当然,RHEL也允许免费使用,但是你将得不到任何系统升级服务,也得不到任何技术支持。RHEL在对外发行的时候采用两种方式:一种就是收费的二进制方式,一种就是完全免费的源代码方式。CentOS就是利用完全免费的RHEL的源代码重新编译而成的,免费提供给大家,所以本质上与RHEL没什么区别。唯一的区别就是更新的频率没有付费的RHEL快。当然,如果你有足够的时间,也可以使用RHEL的源代码构建自己的发行版,至于是否收费,你自己说了算,给自己的公司用当然也不成问题。

不管怎么样,要想吃Linux这碗饭,CentOS是非常好的选择。在免费的同时可以体验到大型互联网公司的服务器系统环境。如果有机会去这些公司面试,根据自己平时的学习经验就可以很好地回答面试官的问题了,而面试这种事儿,“共同语言”是很重要的。

时刻不要忘记,学习Linux的本质还是要学习它最核心的那些机制。而CentOS并不会改变这些机制。掌握好了这些机制,对于掌握任何其他Linux发行版,乃至自己去制作发行版,都将是水到渠成的事情。而在这之前还有希望找到一份较为体面的工作,何乐而不为呢?

 

Linux就是这个范儿 - 本书目录 

1.1.1 我们用Linux的理由 - Linux就是这个范儿

1.1.1 我们用Linux的理由

很多人在决定让Linux入驻自己电脑的时候遇到了很大的障碍。我所了解到的大多数问题是担心没有可以替代的软件。

实际上对于大多数人而言这根本就不是问题,只是他们不知道罢了。但是如果你买电脑就是用来玩游戏的,那么这本书估计也不适合你。这并不代表本书排斥游戏玩家,恰恰相反,我本身就是一个超级玩家。我总是认为拿电脑打游戏是十分浪费资源的,专用的游戏主机更适合干这件事儿,也很便宜。比如一台PS3的价格绝对比一块超级显卡便宜很多,但是游戏效果绝对是目前最棒的。那么排除了打游戏这种需求之外,Linux几乎可以满足绝大部分的需求了。

对于现如今不可或缺的浏览器来讲,除了没有IE以外,其他的各种主流浏览器都有Linux版本,比如Firefox、Chrome、Opera等。有人可能会来抬杠,说Linux下肯定没有Apple的Safari浏览器,那么抬杠的人就要失望了,因为Safari实际上是修改自Konqueror这个来自KDE(Linux的一个图形环境,后面会介绍)的浏览器。其实在Firefox和Chrome还没诞生之前,我最常用的浏览器就是Konqueror了,只是由于后来它的开发者们被Apple耍了一道,之后便开始没落了。说句题外话,现在是HTML5大行其道的年代,即便在Windows上,IE也开始不讨好了,Linux在这方面并不会吃亏。

除了浏览器之外的另外一个重要的领域就是Office软件了。当然MS Office是不可能有的。这方面的首推替代品就是OpenOffice系列了。但是我自身认为OpenOffice是给老外用的。它的中文本土化做得不如MS Office,对中文排版的处理上也特别差劲,而且与MS Office兼容性还不好。这可能是Linux无法推广普及的一大壁垒。但是话又说回来,我们中国有一家十分靠谱的公司,那就是永中科技,它出品的永中Office可以完美地兼容MS Office,完美地处理任何中文排版问题(总觉得永中应该给我点儿好处费才行)。永中Office采用Java开发,所以可以很容易地兼容所有Linux版本,而且还是免费给个人用户使用。绝对的自主知识产权,可以很好地满足一下广大愤青们的虚荣心。此外,老品牌的WPS也不甘寂寞,也正在加紧研发Linux版本,不日就会与大家见面。

对于大多数普通用户来说,上网、打字之外就应该是聊天了。如果你很清高从不使用QQ的话,那就实在是太好办了,几乎所有开源IM工具都不支持QQ。当然,如果你跟我一样很三俗,非QQ不用的话,WebQQ是一个非常好的选择。飞信还可以有libFetion和OpenFetion。唯独阿里旺旺比较麻烦,但是也有一个不伦不类的官方版本出来,我倒是可以在这里帮大家忽悠一下:童鞋们努努力吧……但是如果我那些负责开发旺旺的同事们不看这本书就没啥作用了。

如果你还觉得不够,还想看看电影听听歌曲,那就更好办了。其实Windows上我们使用的大多数免费播放器其真身原本就是为Linux而开发的,比如VLC、MPlayer等。很多播放器,甚至收费的也都只是在它们外面包上一层皮罢了。但是需要注意的就是你的声卡不能太“高级”了,因为一些特别专业的声卡没有Linux的驱动。但是显卡很好办,因为AMD和NVIDIA都很重视Linux,只要是还不太老掉牙的显卡,Linux都能良好地驱动它。

对于一些专业人士,比如视觉设计师们,或许会觉得Linux缺乏专业的设计软件。这其实也是一种误解。GIMP完全可以胜任Photoshop的工作,Inkscape一点也不比Illustrator差劲,Cinelerra兼有Permiere和After Effects的功能。不要忘记,当年卡梅隆导演正是用Linux作为平台完成了《泰坦尼克号》的特效。

当然,Linux除了能做这些Windows能做得很好的事情之外,还能做很多Windows做不到的事情。对Windows最为致命的打击就是Linux几乎不会感染病毒,至于为什么会这样,本书后面的内容会做详细的介绍。但是就现在来看,你大可以放心大胆地让Linux去裸奔(其实你想让它穿件衣服也没啥合适的)。再一个就是你可以合理、合法、合乎道德地免费使用Linux,并免费升级到最新版本,更不需要在安装时输入那25位的(最后一位数码也许已经被狗啃掉了)产品密钥,至于可恶的激活就能滚多远滚多远好了。Linux对硬件的要求极低,即便是目前最新版本的Linux,依然能够非常流畅地运行在只能勉强运行Win95的旧电脑上(最多值200块);然后就是你再也不用担心你的磁盘碎片问题了,因为Linux的磁盘管理方式要比Windows优秀不知多少倍,所以也不会因此而导致系统越用越慢。这其中的奥妙本书也是会告诉大家的。其实Linux的好处还有很多,我就不在这里浪费你的宝贵时间了,当你看完整本书,自然就什么都知道了。反正现在只要你选择了Linux,那就开启了另一种生活方式。

到目前来看,对于我们来说Windows的唯一救命稻草就只有一个了,那就是网上银行。这的确是很重要的一块儿领地,也没有任何替代的方案。我的方法就是虚拟一个Windows出来。这个Windows只用作网银操作,还能有效防病毒,连杀毒软件都省下了“卡车司机”别来找我麻烦啊

好了,我想我们已经给出了足够多的理由使你可以义无反顾地让Linux入驻你的电脑。放心,只要你按照我们的方法来做,是不会给你带来任何损失的。

Linux就是这个范儿 - 本书目录 

1.1让Linux入驻我们的电脑 - Linux就是这个范儿

第一部分 基础篇

第1章 第一次亲密接触

有一对儿异地的恋人,他们每天在手机上聊天,显示的距离永远都是1648 km。快到年底了,女孩实在受不了这种距离而提出了分手,男孩沉默不语。除夕之夜,女孩在家中刷新手机,看到男孩距离她只有1.1 km,再刷新,只有0.9 km。她明白即将要发生什么,含着热泪走向门口……当晚,在隆隆的焰火声中,他们的距离变成了?5 cm,于是第二天他们还是分手了……

这似乎是个悲剧,不知道你能看出笑点吗?

大多数Linux初学者与Linux之间就好像是异地的恋人,他们之间永远都是Windows所隔开的距离。久而久之,实在受不了这种距离而最终要彼此离开。少数人鼓起了勇气,走进Linux并试图完成一次“亲密接触”,结果很多时候是不欢而散的。

学习和掌握Linux需要一种和谐。这种和谐可能取决于第一次亲密接触时的感觉是否足够让人激动不已,以及能否历久弥新。到底是什么样的感觉能让人激动不已是因人而异的,历久弥新更是不尽相同,所以不同的Linux入门资料也会采用不同的方法以期达到这种效果。

作为本书的最初章节,也希望做点类似的工作,只是方法有点特殊。我们期望通过本章的内容尽量拉近你和Linux的距离。换句话说,本书并不是为那些完全不了解Linux的人准备的,你至少应该听说过Linux的名号或者见过别人使用Linux。当然,不管什么方式都是因人而异的,即便对Linux一无所知的朋友也会通过本章受益,但是至少你得有成功安装过操作系统的经验。否则的话,你一定是电脑天才。

也许这章的内容只能让你在门外徘徊,如果是这样,你就应该暂时放弃这本书(不,不要放弃),寻找其他更适合自己的入门资料,然后再继续本书;亦或是这章的内容能够使你足够威猛到融汇贯通的程度,那是我们始料不及的,或许这是整本书都无法达到的高度;我们说:合适就好,那样才叫和谐啊……

1.1 让Linux入驻我们的电脑

“如果给我一千万,我就能买一栋房子。我有一千万吗?没有。所以我依然没有房子。如果我有一双翅膀,我就能飞。我有翅膀吗?没有。所以我也没办法飞。如果给我一台运行着Linux的电脑,我就能玩转Linux。我能拥有一台运行着Linux的电脑吗?”我说:“这个完全可以有。所以,是的,你能玩转Linux。”

大多数人可能会在Windows上虚拟一个Linux出来,我的建议正好相反。要养成使用Linux的习惯,显然就要让Linux入驻你的电脑,让它成为你的主要操作系统,然后再虚拟一个Windows出来。

Linux就是这个范儿 - 本书目录 

序二 - Linux就是这个范儿

序二

选择了IT为业,就选择了紧张而劳碌的生活方式,因为快速变化就是这个行业的基因。

当你刚刚熟悉视窗,又要去学习Linux ;刚刚适应了客户服务器计算模式,又要去学习万维网应用;刚刚开发了Java程序,又要去学习.NET编程;刚刚用惯了Subversion做版本控制,又要去学习GIT;刚刚推出桌面方案,又要学习智能手机的开发;刚刚掌握企业私有数据中心,又要去学习云计算、虚拟化……总之,在你驾轻就熟某项技术之时或之前,新的技术就又出现了。为了保持职业的竞争力,你还得轻装上阵、奋勇学习,直到退休之时(我相信很多人的惯性还会一直延续下去)。在劳顿的同时,也有学习新知的乐趣,这正是IT行业的魅力所在。

虽然Linux已经有22岁的“高龄”, 本身不再是什么新技术,但其重要性始终未减,而且新的相关技术不断涌现,如KVM虚拟化软件。在当今云计算年代,因为Linux是开源软件,其重要性更不断上升。据不完全统计,在公有云端的服务器有80%之多运行Linux。掌握了Linux,也就掌握了通向云端的入场券。Linux的重要性毋须赘言。

同为学习,可以一本正经地学,也可以轻松愉快地学。本人读过若干本有关Linux的书,基本是一本正经地学,趣味不足,权当是工具书在需要的时候去查一下。听说两位作者要写Linux,也没有期望有所不同。收到初稿后,看着目录眼前便一亮,循着章节一一读完。这本书可以轻松愉快地学。

在轻松愉快的同时,并不影响这本书的结构的全面性、技术的准确性和内容的实时性。学习Linux并不仅仅是Linux本身,还包括建构在Linux之上和周边的相关技术和工具。有了这些软件,才能够把Linux变成解决方案,并解决实际中的各种问题。这才是最重要的学习,也是最难的学习。这本书不仅涵盖了各个基本技术点,如文件系统、Shell命令等,还系统介绍了许多工具和软件来建构电子邮件、Web应用等方案。即使对Linux有所了解,也会在这本书中得到新的内容和新的视角。

基于本书的趣味性和技术性,当然还有Linux的重要性,相信其他读者和我一样会喜欢这本书,并在紧张忙碌的生活空隙中精神愉快地读完它,助力于自我的技术提高和职业发展。

金尊和  博士

IBM公司资深工程师

Sun公司Java JDO专家组成员

Linux就是这个范儿 - 本书目录 

序一 - Linux就是这个范儿

序一

Linux已有20多年历史,大部头著作一摞一摞。听到作者要写Linux,我真怀疑他们怎么能写出新意来,直到读过初稿以后……

过去的Linux著作,大多只专注于说清技术细节,文字难免平淡,角度也常常是从上往下地灌输。这种书作为工具书还好,但要读者从头读到尾,则相当单调,有点压抑。特别是,自从IT技术已发展到自由、民主、开放和共享的互联网时代的今天,以前的积累已经使新码农觉得自己很卑微渺小,再加上现实生活又很累,能在读书中加强自我意识,再搞点轻松诙谐,已成为一种必要的调剂。

作为资深码农的本书作者,清楚地感受到社会的改变和码农的需要。他们以不吝权威的态度,采取和读者平等的姿态,借用当代一些大众文学作品的语言风格,把技术明珠Linux,从神坛上拉下来,作为普世和开放的知识与智慧,用大白话表述,以日常例子比喻,不时夹杂文艺调侃,既讲明了技术细节,又娱乐了大众诉求。

往大了说,本书作者的人文态度反映我们的时代,具有自由、民主、开放和共享精神,是一种互联网时代的人文态度。从具体处看,本书的风格旨在提高读者兴趣,何乐不为?

Linux的产生和发展,特别是随之成熟的自由软件(Free Software)和开源软件(Open-source Software)运动,既依赖于互联网技术的发展,又是互联网自由、民主、开放、透明和共享精神的体现。正是这种精神,犹如一个最基本的价值基座,支撑着互联网发展到了今天,宛如一个核心,将互联网的全部价值凝聚起来。采取互联网时代的人文态度来传播Linux,是一种传播方法与传播内容的共鸣。

互联网时代才刚刚开头。虽然存在犹豫和彷徨,但码农一定是改变时代的推动力量,帮助码农成长就是促进时代发展。这本书,正是帮助码农积攒正能量,以应对未来,因此值得推荐。另外,现存的大部头技术书还少有采用这种人文态度的,我为作者的勇气鼓掌。

钱振宇

Windows Live(中国)首席科学家

德国不来梅大学教授、博士生导师

2014年2月12日于北京

编辑:听说写序的这位牛人的父亲是钱骥,两弹一星功勋奖章获得者,我国第一颗卫星东方红一号方案的总体负责人。是真的吗?

作者:你咋知道的?

编辑:不小心百度了一哈。

Linux就是这个范儿 - 本书目录 

目录 - Linux就是这个范儿

  本书内容源自淘宝技术大学的培训实战。由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和同样来自阿里巴巴集团的支付宝网络技术有限公司的高级专家Jie Zhang(张洁)共同著写。 两位作者用轻松、诙谐的语言讲解了高深的Linux特性。通俗易懂、深入浅出,从Linux设计思想的角度出发,授人以渔。同时,又密切结合应用案例,透彻展示出Linux的系统架构设计是如何在实际中贯穿的,从而让读者真正掌握Linux的强大之处。书中不含较为复杂的技术理论问题,一切从实际出发。

  全书共分为三个部分:基础篇、进阶篇和扩展篇。通过对Linux的版本选择与安装、基本使用与系统结构、设计哲学与思想、脚本编程与软件开发、内核编译、网络与认证,以及多媒体等几个方面的精彩讲解,将Linux操作系统的灵魂与运用教授给读者。

  前言

  序一

  序二

第一部分 基础篇

第1章 第一次亲密接触

  1.1让Linux入驻我们的电脑

  1.1.1 我们用Linux的理由

  1.1.2 选择哪个发行版

  1.1.3 安装系统

  1.1.4 登录系统

  1.2.1 没有图形的图形

  1.2.2 架构设计

  1.3 主流桌面环境

第2章 融于心而表于行

 

前言 - Linux就是这个范儿

《Linux就是这个范儿》本书内容源自淘宝技术大学的培训实战。由来自阿里巴巴集团的资深Linux系统专家赵鑫磊和同样来自阿里巴巴集团的支付宝网络技术有限公司的高级专家Jie Zhang(张洁)共同著写。本节为前言部分。

前言

  有个OS名叫Linux,它的故事耐人追寻。

  小小系统,众人追寻,相识相恋,从不伤心……

  赵鑫磊:Hi,Jie,有人找我出书了,不过我觉得我在网络这方面有些欠缺。我知道你在Linux平台上做过不少项目,特别是网络这方面。你能来帮我一下,我们一起来完成这本书好吗?

  Jie Zhang:真的吗?那太棒了,虽然现在有关Linux的书不少,但是我相信经过这么多年的风风雨雨我一定能写出另一种味道。很乐意跟你合作。

  赵鑫磊:太好了,有了你的参与,我们这本书的技术性会更强!

  Jie Zhang:Linux无毒、免费和稳定是它备受推崇的原因。

  赵鑫磊:无毒、免费和稳定还不够给力啊!我觉得知识的保值性才是最主要的。在Linux中有些知识几十年都没过时。

  Jie Zhang:对,这样的知识的投资回报率很高。学好Linux,面对如FreeBSD、Solaris等系统,就不犯愁了。

  赵鑫磊:看完我们这本书,其他书都是小儿科了。哈哈。

  Jie Zhang:你的口气也太大了吧……

  赵鑫磊:哈哈,你得抱有这个希望,我们试着在这么做。

  Jie Zhang:好吧。不想当厨师的女程序员不是好媳妇儿!

  Jie Zhang:那这本书就不是一本工具书了,它是我们多年工作经验积累下的感悟。不管读者喜欢与否,这种感觉就在那里,不多不少,不离不弃。

  赵鑫磊:对,我们这本书不是用于入门,不是工具书。它是传道、授业、解惑的。

  Jie Zhang:我觉得还是初中级比较好。曲高和寡,不一定好。初级最好。

  赵鑫磊:我们的角度已经决定了无法定位在初级。我们并不曲高,但我们也不是初级。我们是传道的!

  Jie Zhang:这点我同意。我们要讲述Linux的精髓,而不是简单的入门。

  赵鑫磊:读者需要反复地推敲书中的内容。就像很多很牛的大师写科普读物,简单几句话里却有透彻的大道理。我们分为三大部分写,基础篇、进阶篇和扩展篇。基础篇能了解Linux的基本特点,进阶篇则从文件系统、进程通讯和网络等更深层次去挖掘Linux的思想内涵,扩展篇则要给读者打开Linux图形和多媒体的缤纷世界。不同层次和需求的读者都可以从中找到自己感兴趣的东西。最重要的是,我们所讲述的每一章,都在谈论机制。

  Jie Zhang:你说的机制是指什么?

  赵鑫磊:机制就是很难改变的、必须要做的事情。

  Jie Zhang:光谈机制还不够,要有实际案例支持,否则看了等于白看。

  赵鑫磊:但是你觉得我们书中的内容看了等于白看吗?

  Jie Zhang:当然没有白看。因为除了谈机制,我们还有方法和实践进行论证。

  赵鑫磊:终于达成共识了。我们每一章都会介绍很多种机制,甚至这种机制引入的来龙去脉都会谈到,并且会简洁清楚地介绍一下现行的方法。就这么干!

致谢

赵鑫磊:

  首先要感谢我所在的公司——阿里巴巴集团,它给了我一个能成为布道者的机会,让我成为淘宝技术大学的讲师。更要感谢原图灵的杨海玲编辑,是她找到我要将我的讲义整理出书,虽然你由于工作原因不能参与本书的出版工作,但是我很期待我们下次的合作。还要感谢我的妻子和儿子,是你们一直在我身边支持我,不抱怨我没有时间陪你们,让我能将大把的时间投入到写作之中。感谢中国Linux公社的网友们,因为你们的鼓励和期盼,让我有了莫大的勇气来完成这本书。

Jie Zhang:

  首先要感谢我的好友卢海峰,本书最初的排版是他一点一点地调整的,很多图表也是他精心绘制的,我想说有你这样的朋友真好!还要感谢爸妈、老公和小女,没有你们在我身边一直给我打气,不会有提笔写作的我,也不会有本书的存在。要感谢的人还有我的朋友曹景海、胡小东、林啸和常雪峰,你们给我提出了不少宝贵的建议。

联系方式

  赵鑫磊邮箱:jagen.zhao@gmail.com

  Jie Zhang邮箱:jie_joy_zhang@yahoo.com

  MagicLinux交流群的群号:41334777

Linux就是这个范儿 - 本书目录