Linux【1】--Linux初识

一、Linux那些事

Linux诞生于上世纪90年代,它的诞生离不开两个重要支柱,就是Unix和和GNU Project为核心的自由软件运动。

其中Unix与Linux内核有直接血缘关系。赫尔辛基大学学生Linus Torvalds在1991年8月,以1987年Andrew S.Tanenbaum发布的一个用于教学的类Unix系统Minix为蓝本开发了一套新的兼容80386处理器操作系统内核,原代码放在芬兰网上最大的ftp站上,这个就是Linux 0.0.1版,Linux的内核发展到现在已经是一个非常成熟的操作系统内核了,最新稳定的版本为3.3.2[1]。

当然,用户单凭一个操作内核是什么都做不了的,要让一个操作系统能够工作,还需要外壳、编译器(Compiler)、函数库(Libraries)、各种实用程序和应用程序等。GNU Project就与Linux除了内核外的大部分重要软件的诞生密切相关。

GNU Project是由自由软件运动[1]的精神领袖,著名黑客Richard M. Stallman在1983年发起的, GNU Project致力于开发一个自由并且完整的类Unix操作系统,包括软件开发工具和各种应用程序。到1991年 Linux 内核发布之前的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发,但是其操作系统内核GNU Hurd[2]没能够充分吸引开发者,直接导致了GNU的未能完成。Linux内核的发布正好恰逢其会,两者一结合,就诞生了Linux操作系统。

所以,Linux操作系统正式名称应该为GNU/Linux,几乎所有 Linux发行版本中都使用了大量的GNU软件。

当然,除了少数Linux专家之外,多数人是没有能力去选择安装并配置好所有的外围软件的,好在Linux操作系统遵从GNU通用公共许可证(GNU Public License,简称GPL)[1]的规定,因此在不违反GPL规定的前提下,个人,社区,以及商业公司都可以能够自由地把选好的Linux内核、外壳、库、开发工具、外围软件归档在一起进行发布,这样被发布的一个集合体就是我们说的某一种发行版本。

发行版本彼此之间可能会有很大差异,这些差异主要表现在它们各自的安装程序包上,还表现在安全性与可用性等方面侧重点的不同。例如,有的发行版本专注于提供良好的桌面体验,有的发行版本则适用于作为开发工作站,有的发行版本则有良好的稳定性和安全性,可以作为网络服务器操作系统。

目前,Linux有数百个发行版,主流的发行版也有十数个。其中部分是彻底的自由软件,也有许多著名的商业版本是需要支一定付费用的[2]。但这与“自由软件”并不矛盾:首先,GPL并不限制软件的商业用途,其次,“自由软件” 是权利问题,不是金钱问题,须知自由软件中的“自由”应该是“言论自由(free speech)”中的“自由”,而不是“免费啤酒(free beer)”中的“免费”。

二、Linux 版本

媒体上在介绍Linux时最常提到的一个词就是“自由软件(free software)”了。但是,市面上有那么多的Linux发行版本(Distributions),其中一些还是商业化版本,这到底是怎么回事呢?而且常常被提到的Linux核心版本(kernel version)又是什么,与Linux发行版本又有什么关系呢?我们需要先简单了解一下Linux的基本结构和Linux的历史才能更好地回答这两个问题。

一个完整Linux操作系统往往由4部分组成,即内核(Kernel)、外壳(Shell)、实用程序(Utilities)和应用程序(Applications)。内核是Linux的心脏,实现操作系统的基本功能,包括控制硬件设备、管理内存、提供硬件接口、处理基本I/O、管理文件系统,为程序分配内存和CPU 时间等等;外壳是Linux的交流窗口,提供用户与内核进行交互操作的接口;实用程序则是工具,是用户用于进行系统日常操作和管理的一些程序;应用程序则是给用户提供各种各样的丰富的功能第三方程序,如各种服务器套件、文档处理套件、各种媒体播放和处理套件。

Linux诞生于上世纪90年代,它的诞生离不开两个重要支柱,就是Unix和和GNU Project为核心的自由软件运动。

其中Unix与Linux内核有直接血缘关系。赫尔辛基大学学生Linus Torvalds在1991年8月,以1987年Andrew S.Tanenbaum发布的一个用于教学的类Unix系统Minix为蓝本开发了一套新的兼容80386处理器操作系统内核,原代码放在芬兰网上最大的ftp站上,这个就是Linux 0.0.1版,Linux的内核发展到现在已经是一个非常成熟的操作系统内核了,最新稳定的版本为3.3.2[1]。

当然,用户单凭一个操作内核是什么都做不了的,要让一个操作系统能够工作,还需要外壳、编译器(Compiler)、函数库(Libraries)、各种实用程序和应用程序等。

当然,除了少数Linux专家之外,多数人是没有能力去选择安装并配置好所有的外围软件的,好在Linux操作系统遵从GNU通用公共许可证(GNU Public License,简称GPL)[1]的规定,因此在不违反GPL规定的前提下,个人,社区,以及商业公司都可以能够自由地把选好的Linux内核、外壳、库、开发工具、外围软件归档在一起进行发布,这样被发布的一个集合体就是我们说的某一种发行版本。

发行版本彼此之间可能会有很大差异,这些差异主要表现在它们各自的安装程序包上,还表现在安全性与可用性等方面侧重点的不同。例如,有的发行版本专注于提供良好的桌面体验,有的发行版本则适用于作为开发工作站,有的发行版本则有良好的稳定性和安全性,可以作为网络服务器操作系统。

目前,Linux有数百个发行版,主流的发行版也有十数个。其中部分是彻底的自由软件,也有许多著名的商业版本是需要支一定付费用的[2]。但这与“自由软件”并不矛盾:首先,GPL并不限制软件的商业用途,其次,“自由软件” 是权利问题,不是金钱问题,须知自由软件中的“自由”应该是“言论自由(free speech)”中的“自由”,而不是“免费啤酒(free beer)”中的“免费”。

下面我们就简单介绍一下任务一中所提到的几个发行版本。

Red Hat Enterprise Linux(RHEL)

Red Hat Enterprise Linux(RHEL)是无疑的Linux企业级应用的市场主导者,Red Hat Enterprise Linux (RHEL)也是中国许多企业架构其应用和服务的首选 Linux 发行版本,多年来甚至是Linux的代名词。 优点:技术支持较可靠、更新及时的;用户群庞大、衍生版本众多;服务器软件/硬件生态系统良好,技术支持社区规模大而有活力。 缺点:技术支持和更新服务是需要付费的;采用久为诟病的RMP软件包管理方式。

Ubuntu Enterprise Linux

Ubuntu是一个流行的Linux发行版,是基于Debian的unstable版本加强而来,以“最好的Linux桌面系统”而闻名,近些年Ubuntu也推出了Ubuntu Enterprise Linux, 在企业Linux应用市场占有率也有较大提高。 优点:技术支持较,用户界面友好,硬件的兼容性好,采用基于Deb的ATP包管理系统。

缺点:技术支持和更新服务是需要付费的, 服务器软件生态系统的规模和活力方面稍弱。

Community ENTerprise Operating System(CentOS)

CentOS是来自于Red Hat Enterprise Linux依照开GPL规定所发布源代码重新编译而成。这个发行版的目标是100%兼容RHEL。这意味你可以共享RHEL的服务器软件/硬件生态系统,同时也意味着你和RHEL用户享受了相同的安全级别。因此可以用CentOS替代RHEL,CentOS是使用最广泛的RHEL 兼容版本。

优点:与包括更新在内的服务完全免费,具备良好的社区技术支持,如果需要更专业级别的支持,那么还可以平滑的从CentOS转至RHEL,采用基于yum的RMP包管理系统。

缺点:不提供专门技术支持,不包含封闭源代码软件;更新服务较为滞后,当然开发团队的可靠性也无法与上面3类商业版本Linux相比。

Debian GNU / Linux

Debian GNU / Linux是一款是由GPL和其他自由软件许可协议授权的自由软件组成的Linux操作系统,由Debian Project组织维护。以其坚守Unix和自由软件的精神,以及其给予用户的众多选择而闻名。 优点:Debian是极为精简而稳定的Linux发行版,有着干净的作业环境,采用基于Deb的ATP包管理系统。

缺点:不提供专门技术支持,不包含封闭源代码软件;发行周期过长,稳定版本中软件过时。中文支持不是很完善。

安装CentOS

我们课程中使用的是 CentOS 6.X,该版本支持常见的32位x86架构、64位AMD64/ Intel64架构的计算机,不同的架构需要下载不同的安装盘。下表是我们所安装的CentOS 6.X的下载地址:

架构 下载地址

x86  http://isoredirect.centos.org/centos/6/isos/i386/
AMD64/Intel64  http://isoredirect.centos.org/centos/6/isos/x86_64/

以支持x86架构CentOS-6.7的为例,总共文件有7个,其中有三个文件是我们这次安装所必须下载的: 文件名 用途

CentOS-6.7-i386-bin-DVD1.iso
CentOS-6.7-i386-bin-DVD2.iso  CentOS安装ISO镜像盘(必须)
CentOS-6.7-i386-LiveDVD.iso   CentOS 免安装运行系统ISO镜像盘(可选)
CentOS-6.7-i386-minimal.iso    CentOS   最小化安装ISO镜像盘(可选)
CentOS-6.7-i386-netinstall.iso  CentOS   网络安装ISO镜像盘(可选)
md5sum.txt             上面所有文件的md5校验码(必须)

在下载这三个文件后,我们需要要验证下载的ISO镜像文件的完整性以保证这些下载的ISO文件没有被发布者之外的第三方改动过。首先获取Windows下MD5校验工具 WinMD5(http://www.winmd5.com/download/winmd5free.zip),将下载的ZIP包解压运行WinMD5.exe, 如下图所示:

三、建立一台虚拟机

我们在Windows中(宿主计算机)用虚拟机软件再虚拟出一台电脑(虚拟机),并在上面安装Linux系统,这样,你就可以放心大胆地进行各种Linux练习而无须担心操作不当导致宿主机系统崩溃了。并且你可以举一反三,将一台电脑变成三台、四台,再分别安装上其他的系统,甚至组成一个网络。(运行虚拟机软件的操作系统叫Host OS,在虚拟机里运行的操作系统叫GuestOS)。 我们课程中将使用的虚拟机软件是Vmware Workstation, 版本是9.0。

1.打开新建虚拟机向导

启动VMware,在其主界面“主页”标签页中点击“新建虚拟机”按钮打开新建向导,或者在其“文件”菜单中点击“新建虚拟机”。

2.虚拟机配置模式选择

单击“下一步”按钮,进入虚拟机配置界面,这里有两个选择:一是“标准”方式,它根据虚拟机的用途自动调整配置;二是“自定义”方式,它允许用户自行设置虚拟机的主要参数。典型方式要比自定义方式简单,但缺少一定的灵活性。方便起见,这里我们选择典型方式。

3.虚拟机操作系统安装模式选择

单击“下一步”按钮,进入操作系统安装模式界面,这里有三个选择:一是“安装盘”也即将操作系统安装光盘放入宿主机光驱进行安装的方式;二是“安装映像文件(iso)”也即通过选择操作系统安装光盘镜像文件来进行安装的方式;三是“以后安装操作系统”,也即创建一台不安装任何操作系统的“裸机”。

4.虚拟机操作系统选择

单击“下一步”按钮进入虚拟机操作系统选择界面,可以看到Windows、Linux、Novell等多种不同的系统,这里我们点选“Linux”。Linux又分为多种版本,我们要安装的是CentOS 6,如果有该选项,可以选择,万一没有,我么可以选择“RedHat Enterprise Linux 5”或者“RedHat Enterprise Linux 6”选项来替代。

5.虚拟机名称和保存位置

单击“下一步”,在接下来的界面中,可以为这个新的虚拟机取一个名称为每个虚拟机创建一个单独的目录,我们这里在D盘下为虚拟机创建了一叫“vm”的目录。

6.虚拟机磁盘配置

单击“下一步”,接下来会要求用户设置虚拟硬盘的大小,默认大小为20GB,单个文件存储虚拟磁盘。可根据硬盘现有空间的实际情况增大或减小,这里我们不做改动。

7.虚拟机磁盘配置

单击“下一步”按钮来到创建界面,其中显示了这台新建虚拟机的各种配置,可以点击“定制硬件”按钮来修改配置,我们这里不做修改。

8.虚拟机磁盘配置

最后单击“完成”按钮返回VMware主界面,将看到主界面上多了一个“CentOS 6”标签页,其中显示了这台新建虚拟机的各种配置。

9.准备操作系统光盘或镜像文件

下面准备为这台虚拟机安装上CentOS操作系统,让它像真正的计算机一样工作。安装之前,先要设置一下虚拟机的光驱。在界面中,双击“设备”下的“CD-ROM”项,打开配置窗口。

本例使用的是从网上下载的CentOS 操作系统ISO安装映像文件,点选“使用ISO映像”项,并通过“浏览”按钮选择下载所得的安装映像文件。设置完毕,单击“确定”按钮。如果使用Linux安装光盘,因此点选“使用物理驱动器”项,并在下拉列表中选择正确的光驱盘符。

四、安装Linux

1.安装引导

首先要设置计算机的BIOS 启动顺序为光驱启动,保存设置后将安装光盘放入光驱,重新启动计算机。计算机启动以后会出现如下图所示的界面。直接按下来进入图形介面的安装方式。

1. 安装或升级现有系统(Install or upgrade an existing system):这个选项是默认的。选择此选项,将使用CentOS 的图形安装程序安装或者升级系统,会自动安装显卡的驱动;

2. 用基本视频驱动程序安装系统(Install system with basic video driver):当选项1出现问题时,重新启动计算机,并尝试此选项;

3. 修复现有系统(Rescue installed system):选择这个选项来修复你的现有的CentOS系统;

4. 从本地驱动器启动(Boot from local drive):从本地硬盘启动系统。

2.检测光盘介质 如下图所示,如果是一张完整的安装盘,可以直接单击 “Skip” 按钮跳过。

如果你确定你所下载的镜像和刻录的光盘没有问题的话,那么这里可以选择Skip,不过,你也可以按下 “OK” 来进行光盘的测试,因为通过光盘的测试后,后续的安装比较不会出现奇怪的问题。过如果你按下 “OK” 后,程式会开始测试光盘内的所有文件的信息,将会花费一定的时间。

3.安装欢迎界面

 当检测完电脑硬件信息后,进入安装欢迎界面,如下图所示。

4.选择安装过程中的语言

单击 “Next” 进入如下图所示的界面,选择安装过程中使用的语言(注意:不是选择系统所使用的语言),此处选择Chinese (Simplified)(简体中文)。

5.选择键盘布局类型

选择完安装过程中的语言后,单击“Next”进入如下图所示的界面,选择键盘类型一般默认会选择“美国英语式(U.S.English ),即美式键盘,在此使用默认的选择。

6.选择存储设备

选择一种存储设备进行安装。基本存储设备作为安装空间的默认选择,适合哪些不知道应该选择哪个存储设备的用户。而指定的存储设备则需要用户将系统安装指定到特定的存储设备上,可以是本地某个设备,当然也可以是SAN(存储局域网)。用户一旦选择了这个选项,可以添加FCoE/iSCSI/zFCP磁盘,并且能够过滤掉安装程序应该忽略的设备。这里选择基本存储设备,单击下一步按钮。

基本存储设备:用于台式机和笔记本等等;指定存储设备:用于服务器等等

7.初始化硬盘

如果硬盘上没有找到分区表,安装程序会要求初始化硬盘。此操作将丢弃现有硬盘上的所有数据,单击“是,忽略所有数据”重新初始化,如果你觉得硬盘上可能有用数据,则点击“不,保留所有数据”。

图8 初始化存储设备警告框

8.设置主机名与网络

安装程序会提示你为这台计算机设置主机名和域名。除非你有特定需要定制的主机名和域名,默认设置localhost.localdomain是一个很好的选择。

在一般情况下,大部分公司或者组织的网络都有DHCP(动态主机配置协议)服务,我们无需配置网络参数。

但如果主机有需求要设置固定IP,我们可以选择『配置网络』->『有线』->『System eth0』-> “『编辑』,弹出编辑窗口上选择IPv4 设置,打开方法边上的下拉菜单,选择『手动』。单击添加按钮,依次输入本机的IP、子网掩码、网关。在下面的DNS 服务器地址。最后,点击应用按钮即可。

9.时区选择

因为全世界分为24 个时区,所以,要告知系统时区在哪里。如下图所示,你可以选择北京,或直接用鼠标在地图上选择。要特别注意不能勾选 “UTC”选项,它与夏令时有关,选择这个选项会造成时区混乱,导致系统显示的时间与本地时间不同。

10.设置管理员(root)密码

下面是最重要的系统管理员的密码设置,如下图所示。在Linux 中,系统管理员的默认名称为root,请注意,密码至少6 个字符以上,并需要包括大写英文字符和小写英文字符,如果输入的密码过于简单或者系统化,安装程序会弹出警告框。

11.磁盘分区配置

为方便分区硬盘,CentOS 预设给若干分区模式,不过在这里我们将使用“创建自定义分区”来手动为硬盘分区,如下图所示,选择最后一个选项。 步骤1. 选择创建自定义布局,按下一步按钮,来到选择要进行分区操作的源驱动器画面。 步骤2. 创建Swap 分区。系统中只有一个硬盘,名为sda,大小为20473MB,点击选中sda,点击创建按钮,弹出如命令序列 1‑17 生成分区对话框,选择标准分区,点击创建按钮,弹出如命令序列 1‑18 添加swap分区,文件系统选择swap,大小填入2048,其他默认,点击确定,交换分区创建完毕。 步骤3. 创建“/”根分区。点击选中sda,点击创建按钮,弹出如命令序列 1‑17 生成分区对话框,选择标准分区,点击创建按钮,弹出如命令序列 1‑18 添加swap分区,文件系统选择ext4,挂载点选择“/”,选择“使用全部可用空间”,其他默认,点击确定,“/”根分区创建完毕。 步骤4. 至此,分区已全部创建完毕,如果不满意,还可以点击重设按钮进行更改,如果确定,点击下一步按钮后,弹出命令序列 1‑20 格式化警告框,单击“格式化”按钮,弹出命令序列 1‑21 将存储配置写入磁盘警告框,提示用户确认所配置的的分区选项,单击将“修改写入磁盘”按钮,安装程序开始格式化磁盘并进行分区。

CentOS 总共预设了5种分区模式,分别为:

1. 使用所有空间(Use All Space):选择此选项,删除你硬盘上的所有分区(这包括如Windows 的NTFS和 FAT32分区或其他操作系统创建的分区)。

2. 替换现有的Linux  系统(Replace  Existing Linux System ):选择此选项,将删除硬盘上先前的Linux  安装创建的分区。这不会删除其他分区(如VFAT 或FAT32 分区)

3. 缩减现有系统(Shrink Current System):选择此选项,调整当前的数据和分区安装在手动释放的空间是一个默认的红帽企业Linux 布局。

4. 使用剩余空间(Use Free Space ):选择此选项以保留你当前的数据和分区并安装在未使用的存储驱动器上的空间可用的Scientific  。确保有足够的存储驱动器上的可用空间,然后再选择此选项。

5. 创建自定义布局(Create Custom Layout   ):选择此选项,手动存储设备进行分区并创建自定义布局。

12.引导装载程序设置

分区完成后来到如下图所示GRUB引导安装窗口,可采用默认设置,直接单击下一步按钮。 设置引导装载程序密码的方法是,选择使用引导装载程序口令,在弹出的窗口中输入密码。

13.选择系统要安装的软件包 引导装载程序设置完成后来到如命令序列 1‑23 系统软件包安装选择界面,默认安装方案是“Minimal”,将安装一个基本的系统(不包含任何可选软件)。我们选中“Web Server”和“现在定制”这两个选项,然后单击下一步按钮,来到如命令序列 1‑24 web服务软件包选择界面,不改动,单击左侧列表中“数据库”表项,来到如命令序列 1‑25数据库软件包选择界面,勾选“MySQL数据库服务器”,单击单击左侧列表中“服务器”表项,来到命令序列 1‑26 服务器软件包选择界面,勾选“F TP服务器”,单击单击左侧列表中“桌面”表项,来到命令序列 1‑27桌面软件包选择界面,勾选除“KDE桌面”外的所有选项,至此软件包选择完毕,点击下一步按钮,系统开始检查所选软件的依赖性,如命令序列 1‑28所示。

CentOS总共提供8中可选软件包安装方案,如下所示:
1.      Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具。
2.      Minimal Desktop:基本的桌面系统,包含的软件更少。
3.      Minimal:基本的系统,不含有任何可选的软件包。
4.      Basic Server :安装的基本系统的平台支持,不包含桌面。
5.      Database Server:基本系统平台,加上MySQL 和PostgreSQL  数据库,无桌面。
6.      Web Server:基本系统平台,加上PHP,Web server,还有MySQL 和PostgreSQL  数据库的客户端,无桌面。
7.      Virtual Host:基本系统加虚拟平台。
8.      Software Development Workstation:包含软件包较多,基本系统,虚拟化平台,桌面环境,开发工具。

14.开始安装系统 在依赖性检查完毕后,安装程序开始安装系统。在安装的画面中,会显示还需要多少时间,每个软件包的名称,以及该软件包的简单说明,如命令序列 1‑29 安装CentOS所示。

15.安装系统完成

等待安装完之后,最后将出现如命令序列 1‑30 安装完毕,重新引导画面时,请将光盘从光驱中拿出来,并按下“重新引导”按钮重启系统,如下图所示。

五、Linux系统管理

在所有的问题之中,最先要解决就是:如何才能够让Linux做我们想让它做的事情?我们可以用各种方式做到这一点:例如,一个Linux程序员,可以用编程语言通过操作系统的编程接口与Linux进行交互如果,如果足够牛的话,甚至可以考虑撇开编程接口,直接与Linux内核进行交互。但是,作为一个普通的Linux系统管理员,我们还是倾向于通过现成的操作命令接口(User CommandInterface)与Linux打交道。与Linux的“核(kernel)”对应,操作命令接口很形象地被称为“壳 (shell)”。

简单来说, Shell就是一种能让你与Linux之间进行“对话”的软件。Shell等待你输入,向Linux解释你的输入,并且处理各种各样的系统的输出结果,把这些结果展示给你。这种交互可以是即时交互(从键盘输入,并且可以立即得到响应),也可以是非即时交互(shell 脚本[1])。

我们所使用的CentOS系统上的默认Shell叫做Bash(The GNU’s Bourne Again Shell)。Bash也是绝大部分Linux平台上的默认Shell。

事实上,Linux为用户提供了两种截然不同的“壳”:—种是命令行式shell(Command Line Interface shell ,即CLI shell),用户利用这些字符命令或者shell脚本来组织和控制作业的执行,或者对计算机系统进行管理。另—种是图形界面shell(Graphical User Interface shell 即 GUI shell),用户通过点击,拖动图像图标来完成同样的事情。

¨ 在Linux中,传统意义上的shell指的就是命令行式的shell,在下面课程中,如果没有特别注明,所提到的shell就是命令行式的shell

当文本模式下登入系统或在图形界面下打开终端,首先将看到的是一个提示符(prompt)。提示符本身就包含了相当多的信息:CentOS的标准提示符包括了登录用户名、登入的主机名、用户当前所在的目录(workingdirectory)和提示符号,例如

[stu@localhost~]$

其中,‘Stu’为登录用户名,’localhost’为登录主机名,’~’ 表示当前用户正处在stu用户的家目录中,’$’则表示当前登录用户为普通用户

 根据  Bourne Shell 的传统,普通用户的提示符以'$'结尾,而根用户以’#’结尾

¨ ’~’ 符号不是一个固定的目录名称,而是一个”Shell 变量”,代表使用者的”家目录”,举例来说,如果我以dev01用户身份登录系统,dev01的家目录是’/home/dev01’,那么’~’就代表’/home/dev01’,如果我以root身份登录系统,而root的家目录是’/root’,那么’~’就代表’/root’。至于到底”家目录”和”Shell 变量”到底是什么,我们在后继的教程中会详细讨论。

Linux中所谓的命令(Command),本质上就是一个与命令同名的可执行(Runnable)的二进制文件或者Shell脚本。

   这些可执行文件一般都放在/bin、/sbin、/usr/bin或者/usr/sbin等目录中,当要执行命令的时候,Shell 就会在这些目录或者其他用户指定的目录中(我们在后面会详细讨论如何指定这写目录)搜索相应可执行文件,找到以后就运行,如果找不到文件,那么Shell就会在终端中输出相应的错误信息。

  切记,Linux 区分大小写。换一句话说,whoami 和WHOAMI 或 whoAmi是不一样的。


   选项(option):包括一个或多个字母的代码,一般来说前面有一个’-’ 符号或者’--’符号(’-’或者’--’符号是必要的,Linux用它来区别选项和参数),选项可以看作是一种开关,一般用于控制命令的行为。事实上,Linux中的命令在正常情况下最少有两个选项,--help和—version。

   参数(parameter):一个字符串,参数一般用来向命令传递一些时运行所需的信息(例如文件或主机名称等),Linux大多数命令都被设计为可以接纳参数。

   命令本身、选项和参数中间用空格来分隔,不论空多少格,shell 都视为一格;    

  所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C语言中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

   echo命令中的转义字符与C语言中的转义字符基本一样,可以参考echo命令的帮助文档

六、用好帮助文档man

俗话说的好:“授人以鱼不如授人以渔”,这里我们将好好讨论一下如何使用Linux中一个重要工具——帮助文档。   

帮助文档相关的命令有好几个,但是最常用的一个命令就是man命令,man就是manual的缩写,用来查看系统中自带的各种参考手册(注意,不仅仅是命令噢)。例如我们现在要查看who命令的帮助文档,最简单的用法如下:

[stu@localhost~]$ man who
这时就来到了man命令的界面中,其中的项目意义如下所示:

NAME   这个命令(程序)的名称和简单用途的说明
SYNOPSIS   命令(程序)语法
DESCRIPTION  命令(程序)详细说明,包括选项与参数的用法
AUTHOR  命令(程序)的作者
REPORTINGBUGS  如果发现bug可以联系的电子邮件
COPYRIGHT  命令(程序)版权协议
SEE ALSO  还可以参考哪些文档

当然,不同的命令(程序)的文档格式可能有些微区别,文档中还可能包括的项目有:

COMMANDS 当命令(程序)在运行的时候,可以在此命令(程序)中下执行内部命令 FILES 这个命令(程序)或数据所使用或者相关的某些文件 EXAMPLE 这个命令(程序)执行的一些参考的样例

 在  man界面中,可以使用如下快捷键来进行操作:

¨       上/下箭头  向上/下滚动一行
¨       [Space]   向下翻一页
¨       [Page Down]     向下翻一页
¨       [Page Up]     向上翻一页
¨       [Home] 回退到第一页
¨       [End]     前进到最后一页
¨       /string   向下搜寻 string 这个字符串
¨       ?string   向上搜寻 string 这个字符串
¨       n, N 利用 / 或 ? 来搜寻字符串时,可以用 n 来跳转至下一个匹配处,可以利用 N 来跳转至上一个匹配处。
¨       [q]  退出

全部手册分为好几个部分,每个部分中可能会存在同名的内容。

man命令可以后跟一个数字来表示要查阅的用户手册。若不加数字,那man命令默认从数字较小的手册中寻找相内容:
1.        shell中可以操作的指令或可执行文件
2.        系统核心可使用的函数与工具等
3.        一些常用的函数(function)与库(library),大部分为C的库(libc)
4.        设备文件的说明,通常在/dev下的文件
5.        配置文件或者是某些文件的格式
6.        游戏
7.        惯例与协议等,例如Linux文件系统系统、网络协议、ASCII码等等的说明
8.        系统管理员可用的管理命令
9.        跟系统核心有关的文件

七、关机与重启

工作环境下的Linux主机尤其是提供敏感或者要害服务的主机来说,关机是系统管理员要给予充分重视的一件大事:不恰当或者不正确的关机和重启,轻则可能造成服务中断;重则文件系统损毁、数据丢失或者出错,导致不可挽回的后果。

当然, 我们面对问题还是简单的,因为主机并没有在线提供服务,所以除了我们自己外,没有其他在线用户了,所以即使直接将电插头拔掉关机也多半不会造成什么后果。但是,在任何情况下,我们都极其强烈地建议不要使用这种做法以及其他各种不正确的方法关机和重启。我们应该通过正确的命令来进行关机和重启。

  ¨     普通用户没有权限使用shutdown命令,只有root用户才有权限。

shutdown [选项] 时间 [警告消息]

系统关机 

   -c 取消前一个shutdown命令。值得注意的是,当执行一个如“shutdown  -h 11:10”的命令时,只要按“Ctrl+C”键就可以中断关机的命令。
   -f 重新启动时不执行fsck(注:fsck是Linux下的一个检查和修复文件系统的程序)。
   -h 关闭系统所有服务后直接关机。
   -k 只是送出信息给所有用户,但并不会真正关机。
   -n 不调用init程序关机,而是由shutdown自己进行(一般关机程序是由shutdown调用init来实现关机动作),使用此参数将加快关机速度,但是不建议用户使用此种关机方式。
   -r重新启动系统。
   -f<秒数> 送出警告信息和关机信号之间要延迟多少秒。警告信息将提醒用户保存当前进行的工作。

[时间] 设置多久时间后执行shutdown命令。时间参数有hh:mm或+m两种模式。hh:mm格式表示在几点几分执行shutdown命令。例如“shutdown 10:45”表示将在10:45执行shutdown.+m表示m分钟后执行shutdown.比较特别的用法是以now表示立即执行shutdown. 值得注意的是这部分参数不能省略。

[警告信息] 要广播所有登入用户的信息,这些信息会显示在当前登入用户的终端中。

其他关机命令”

reboot = shutdown -r now
halt = shutdown  -h now
powerfoff =halt + 切断电源

不建议上面三个命令,强行关机,有可能丢掉文件。

参考资料:

宁波城市职业技术学院 http://www.icourse163.org/course/NBCC-437004

个人公众号,比较懒,很少更新,可以在上面提问题:

更多精彩,请移步公众号阅读:

Sam avatar
About Sam
专注生物信息 专注转化医学