第1章 Linux简介
1.1 Linux能做啥
Windows能做啥?可能十个人十个都知道。具体能做啥,就不用我说了。Linux能做啥?为啥有了Windows,为啥还要Linux?
Windows与Linux的关系,打个不很恰当的比喻,如果把Windows和Linux都作为交通工具,Windows就想单车(自行车),Linux就像列车。前者方便易用,并几乎没有轨道的限制,但它只能单用户,能承载的重量有限;后者虽然不像前者方便易用,但它可以多用户,并且可以运送巨无霸的东西!如管理成千上万个节点的大数据集群。关键一点是安全,还免费,更有很庞大的志愿者和使用者,当然,它也有一个不足,必须使用命令方式操作,就像列车务必在铁轨上一样。当然这也是保证其安全所需要的。
1.2 如何学习Linux
学好Linux将大大提升你的竞争力,哪如何学好它呢?是否存在捷径?我觉得有但又没有。
作为初学者,个人建议可以像小孩学英语一样,先学会用,而且是学哪些最常用、最基础、最重要的部分。如果会用,理解起来就方便多了。否则,已开始就学一大堆的语法,效果往往事倍功半。此外,就像锻炼身体、学习英语等一样,贵在实践再实践,“纸上得来终觉浅,绝知此事要躬行”。
另,向大家推荐几个学习Linux的网站:
Linux中国:https://linux.cn
鸟哥的Linux私房菜: http://linux.vbird.org
Linux下载站: http://www.linuxdown.net
Linux公社: http://www.linuxidc.com
《鸟哥的Linux基础学习篇》鸟哥著
1.3 Linux的历史
Linux的前辈是Unix,但可能是由于历史原因,Unix派别林立而且主要用在大型服务器,如IBM的AIX,HP的HP-Unix,SUN公司(目前是Oracle的一部分)的SUN-Unix等等,更要命的一点是他们商业味道很浓。
1991年10月5日, 上午11时53分,有一个名为 Linus Torvalds 的年轻芬兰大学生在 comp.os.minix 这个新闻群组上发表了这样一个帖子,称他以bash,gcc等工具写了一个小小的内核程序,这个内核程序可以在Intel的386机器上运行,这引起很多人的兴趣,由此标志L inux的诞生。
当初还是个大学生的 Linus 大概完全没想到当初被他视为个人兴趣的程式,在几年以后会有超千万个使用者,由他自己带头开发的操作系统现在已经在世界各地受到普遍的欢迎。
1.4 Linux的优缺点
Linux继承了Unix 稳定有效率的特点。网路上安装 Linux 的主机连续运做一年以上而不曾宕机、不必关机是稀松平常的事,不过Linux却不像一般Unix要负担庞大的版权费用,也不需要在专属的昂贵硬体上才可以使用;Linux可以在一般的 i386 PC 上执行,效能又高,自然而然的接收了过去几十年来在Unix上累积的程式资源跟使用者,加上GPL的版权允许大家自由散发Linux的原始码,并针对自己的需求修改程式,使得Linux在目前已经成为非常受人欢迎的一个多用户、多任务、免费、稳定、效率高、可以在众多不同电脑系统平台上执行、拥有亿万粉丝的操作系统。当然,Linux也不是完美无缺的,它的一个最大缺点就是需要使用“命令行”来操作和管理,尤其是对初学者,不过在“安全第一”的今天,这个缺点或许又是保证其优点的重要方面。
1.5 Linux的发行版本
Linux基于Debian、Red Hat和SUSE源的那些发行版本在生产环境中占据优势地位,以下为目前Linux比较流行的版本。

表1.1Linux流行版本
发行版本 | 版本说明 |
CentOS | 基于Red Hat Enterprise Linux的一个免费发行版本 |
Debian | 一种流行的非商业性质的发行版本 |
Ubuntu | 基于Debian的一个精练版本 |
Fedora | 从Red Hat Linux发出的一个免费版本 |
Oracle Enterprise Linux | Oracle公司提供的一个版本 |
Red Flag | 中文的一个发行版本,类似于Red Hat |
Red Hat Enterprise | Red Hat Linux的商业化版本 |
SUSE Linux Enterprise | 流行于欧洲的多语言版本 |
对Linux而言,内核是其心脏,与硬件打交道,开机后留住在内存 ,而Shell为内核与应用程序间的桥梁,内核及shell构成Linux的主要内容,应用程序通过shell(或命令行)与服务器进行交互,shell调用内核(Kernel)来利用和管理服务器硬件资源,应用程序(如用户自己编写shell脚本等,office是windows操作系统的应用程序)保存在硬盘,需要时调入内存,它们之间的关系可用下图形表示:
(图1-1 Linux操作系统结构图)
1.6 登录系统
前面讲了Linux是个非常重要、功能强大、而且有意思的系统,而且还提到需要在命令行操作,不像使用windows一样,只需要按按鼠标即可,命令行操作确实不方便,尤其是对大多数用惯了windows的人来说。这确实有个‘痛苦’的过程,但是windows一般只能用来写写文档、上上网、打打游戏、看看电影之类,企业生产环境大都采用非windows环境,如Linux或Unix,因此对于大多数希望从事IT相关行业者,尤其进入大数据这个朝阳行业的人来说,是一道必需迈过的坎。
万事开头难,实际上你只要用过一段时间,将会慢慢喜欢上它,它有很多你想不到的优点,如tab补全功能。
如何登录Linux系统呢?如果Linux就在本地机器上,只需要启动Linux即可;如果Linu服务器不在本地,那也很简单,只要在你的客户端安装一个连接Linux的客户端(如Putty或Xshell等,这些在网上都可免费下载),然后做一个简单配置就可以了,下面我们以登录远程Linux服务为例(注:本例中Linux已安装好,并创建一个用户:conn_linux):
第一步:安装Xshell 5
从网上下载一个Xshell 5,安装基本按照缺省情况即可
第二步:打开Xshell 5,点击文件菜单,然后点击新建,进入下一个界面

第三步:点击连接,配置服务器的IP,端口,如下图:

第四步:点击用户身份验证,配置用户及密码信息,如下图:

第五步:点击确认按键,所有配置完成,最后在会话界面将出现刚创建的连接,名为conn_linux,如下图。

第六步:点击连接,如果IP,用户密码等都正确的话,进入Linux系统,如能看到如下类似界面,祝贺你,你已经迈入Linux大门了!

Xshell 5是连接Linux服务器的工具之一,还可以通过Putty等工具,配置和使用也很方便,此外大家还可以利用Xftp 5工具来上传或下载Linux服务器上的文件,它的安装和配置比较简单,网上有很多这方面的文档,这里就不再展开来说了。
1.7 登录后,试试身手
登录Linux后,可以用一些简单命令,试一试Linux这个听起来有点神秘的操作系统。

注意,linux是区分大小写的或称为大小写敏感,所以pwd和PWD是不同的。
Linux系统要经常输入命令,而且有些命令或文件还比较长,如果要一个一个输入,不但麻烦,还容易出错。Linux是否有更有效的方法呢?答案是肯定的,那就是利用Tab键!它具有命令补全或文件补全的功能,这也是Linux很有趣的地方之一。当然,Linux为尽量减少你敲键盘次数,还有更强大的地方,如编写shell脚本,这个后面我们会详细介绍。
先看几个使用Tab键来偷点懒。
假如我们想进入homework1130这个目录,是否要cd homework1130?如采用Tab补全功能,在大大减少输入量的同时,还可大大提高你的准确率。具体实现方法为:输入目录名称的前几个字符即可,然后按Tab,系统自动补全该目录名称,具体操作如下图:


类似的神奇,Linux还有很多,如通过上下方向键(↑↓),可以调出前面输过的命令,输过了的命令可以不用重新输入了,这个功能也不错,顺便提一下,这些功能在MySQL数据库也有,讲MySQL时我们会介绍,看来好东西,大家都喜欢。
遇到不熟悉的命令怎么办?使用man帮大忙!
man 查看的具体命令
1.8 shell种类
shell是Linux内核与应用程序间的桥梁,起着非常重要的作用,shell由多种,如bsh(或sh),csh,ksh,bash等,这些shell基本内核对差不多,但还是有不少不一样的地方,所以我们在编写shell程序时,首先需要说明使用哪种shell来解释你程序,具体做法就是在shell程序第一行说明,如#!/bin/bash,这些内容大家先了解一下,后面我们会详细介绍,它们间关系大致如下:
(图1-2shell种类及关系图)
shell有多种,每个连接用户系统一般会先给个缺省shell(当然缺省shell可以修改),哪里可以看到你的缺省shell呢?查看文件/etc/passwd,或echo $SHELL 可以看到用户使用的缺省shell,cat /etc/shells可以看到目前已安装的shells。如何查看这些文件,后面将介绍。