首次进入 Linux 的开机、关机与指令下达方式的介绍
终于可以开始使用Linux这个有趣的系统了!由于Linux系统使用了异步的磁盘/内存数据传输模式,同时又是个多人多任务的环境, 所以你不能随便的不正常关机,关机有一定的进程喔!错误的关机方法可能会造成磁盘数据的损毁呢! 此外,Linux有多种不同的操作方式,图形接口与文本接口的操作有何不同? 我们能否在文本接口取得大量的指令说明,而不需要硬背某些指令的选项与参数等等。这都是这一章要来介绍的呢!
登录系统有这么难吗?并不难啊!虽然说是这样说,然而很多人第一次登录Linux的感觉都是『接下来我要干啥?』如果是以图形接口登录的话,或许还有很多好玩的事物, 但要是以文本接口登录的话,面对着一片黑压压的屏幕,还真不晓得要干嘛呢!为了让大家更了解如何正确的使用Linux, 正确的登录与离开系统还是需要说明的!
开机就开机呀!怎么还有所谓的登录与离开呀?不是开机就能够用电脑了吗? 开什么玩笑,在Linux系统中由于是多人多任务的环境,所以系统随时都有很多任务在进行,因此正确的开关机可是很重要的! 不正常的关机可能会导致文件系统错乱,造成数据的毁损呢!这也是为什么通常我们的Linux主机都会加挂一个不断电系统啰!
如果在第四章一切都顺利的将CentOS 5.x完成安装并且重新开机后, 应该就会出现如下的等待登录的图形画面才对。画面的左上方是CentOS 5的distribution说明, 而1号箭头所指处的四个文本则是可以改变工作环境的地方,2号箭头说明今天的日期/时间与主机名称(www.vbird.tsai), 3号箭头就是我们可以使用帐号登录的输入框框啰。
让我们来了解一下上图1号箭头所指的那四个功能吧!先点击一下『语言』按钮,你会发现屏幕出现很多可以选择的语系数据! 鸟哥截取部分画面如下所示。在下图中你可以选择不同的中文或者是其他语言,等一下你登录后, 屏幕就会显示你所选择的语系画面了。不过要注意的是,如果你选择的语系的软件文件并没有被安装, 那么登录系统后就会出现很多乱码啊!如下图所示,鸟哥先选择台湾的繁体中文,然后按下『改变语言』按钮即可。
接下来让我们按一下『作业阶段』按钮吧!按下作业阶段后屏幕就会出现如下的画面。 所谓的作业阶段指的是你可以使用不同的图形接口来操作整个Linux系统。 这个图形接口并不是只有将桌面背景更改而已,而是整个显示、控制、管理、图形软件都不相同了! 非常的好玩!目前CentOS 5.x缺省至少就提供GNOME/KDE这两种图形接口(我们称为窗口管理员, Window Manager, 注1)。 如下图所示。CentOS 5.x缺省使用的是GNOME这个玩意儿,如果你没有改变的话,那等一下就会登录GNOME的图形接口啰。
接下来准备要登录啦!我们在经过第四章的安装过程后,理论上现在会有两个可用的帐号,以鸟哥的安装为例, 我有root及vbird两个可用的帐号喔!那第四章我们也说过,最好不要使用root啦!因此, 鸟哥就在图1.1.1的地方开始用vbird来登录了,如下所示,记得输入完毕后要按『Enter』喔!
接着系统会要你输入密码,此时请在密码栏填入该帐号的密码!在你输入密码时该字段会显示黑点来取代! 这是为了保密啦!输入完毕后请按下『Enter』开始登录啰!
由于鸟哥在图1.1.2曾经修改过语系数据,因此系统就会询问你, 是否要将刚刚的设置变更成为默认值?还是只有这次登录才使用呢?你可以按下『成为默认值』, 让你这次的决定套用到未来的操作喔!OK!让我们开始来玩一玩GNOME这个缺省的窗口管理员吧!
终于给他看到图形接口啦!真是很开心吧!如下图所示,整个GNOME的窗口大约分为三个部分:
Linux桌面的使用方法几乎跟Windows一模一样,你可以在桌面上按下右键就可以有额外的菜单出现; 你也可以直接按下桌面上的『个人文件夹』,就会出现类似Windows的『文件总管』的文件/目录管理窗口, 里面则出现你自己的工作目录;好了,让我们点击一下『应用程序』那个按钮吧!看看下拉式菜单中有什么软件可用! 如下图所示。你要注意的是,因为我们的Linux尚未连上Internet,所以在线更新系统会有警告消息(2号箭头处), 请你将他关闭吧!
首先我们来了解一下常用的GNOME文件总管要怎么用?要说明的是,GNOME的文件总管其实称为『鹦鹉螺(Nautilus)』, 只是我们比较习惯称呼文件总管就是了。^_^。当你在桌面中点击『个人文件夹』就会出现如下图标。 缺省鹦鹉螺是用小图标来显示文件,而且隐藏档也没有显示出来呢! 所以你只会看到一个文件。注意1号箭头所指的地方,你可以按下那个小按钮来切换到不同的目录去喔!
鸟哥还是比较喜欢清单式的将所有数据都列出来,所以我们的设置需要修正一下。 请在上图中按下『编辑』点击『偏好设置』后,会出现如下图标,请将箭头所在处的两个地方修订一下, 包括以清单显示及显示隐藏档喔!填完就按下右下角的『关闭』即可。
将原本的画面关闭再重开一个文件总管,请如下图所示,按下『显示』选择『显示隐藏档』及『以清单方式显示』后, 就可以发现到好多文件啰!什么是隐藏档呢?其实文件名开头为小数点『.』的, 那个文件就是隐藏档了。所以在如下图的画面中,你会看到多出来的文件文件名都是小数点开头的!
除了自己的家目录之外,你可以在上图的左下角『vbird』处点一下,然后选择根目录(/),就会出现如下图标。 1号箭头告诉我们,这个vbird帐号无法登录该目录,所以有个红色的禁止图标;如果想要查阅某目录的内容, 如2号箭头所指处,你可以点一下三角形的图标,就能够将该目录内的数据捉出来了;最后,如同3号箭头所指的, 如果是出现纸张的图标,代表那是个文件而不是目录啰!
在CentOS 5.x当中所使用的中文输入法为SCIM软件,你要启动SCIM很简单,只要叫出任何一个能够输入文本的软件, 然后按下『Ctrl』+『Space(空白键)』就能够调用出来了!以下图为例,鸟哥运行『附属应用程序』内的『文本编辑』软件, 然后按下[ctrl]+[space]就出现下图。然后点一下图中的箭头所指处,你就会看到很多输入法了! 比较有趣的是那个『新酷音』输入法, 其实那就是大家常用的新注音啦!可以自动挑字的输入法!不错用喔!
如果你没有想要继续玩X Window了,那就注销吧!如何注销呢?如下图所示,点击『系统』内的『注销』即可。 要记得的是,注销前最好将所有不需要的程序都关闭了再注销啊!
会有一个确认窗口跑出来给我们确认一下,就给他点击『注销』吧!
请注意喔,注销并不是关机!只是让你的帐号离开系统而已喔!
底下的例题请大家自行参考并且实作一下喔!题目很简单,所以鸟哥就不额外抓图了!
玩过了GNOME之后,接下来让我们来了解一下KDE这个也是很常见的窗口管理程序吧! 请回到图1.1.1中,在按下『作业阶段』后请选择KDE,然后输入你的帐号密码来登录KDE的环境。 登录后的缺省画面如下所示:
上图中的箭头所指处的功能说明如下:
同样的,得先来了解一下文件管理的软件啊!在GNOME文件总管称为鹦鹉螺, 在KDE文件总管称为『Konqueror, 征服家』。你可以按下『K菜单』然后选择『家目录』,如下所示:
启动征服家缺省会出现如下图所示的画面:
如上图所示为征服家的缺省显示情况。画面的左边有点类似目录的列表,右边则是文件详细的信息。 而征服家可以让妳仅选择用户可以随意应用的家目录 (2号箭头处) 或者是整个系统的文件信息 (1号箭头处)。 征服家缺省显示的是家目录啦。3号箭头处指出该目录内有哪些信息,4号箭头则是详细的文件参数啦。 接下来请点击『Root文件夹』吧!让我们瞧瞧整个文件系统有些什么东西?
如上图所示,当你点击Root文件夹,并且按下/etc那个文件夹后,画面右边就会出现/etc文件夹的文件内容了。 一开始文件是以小图标来显示,如果你按下清单图标,就是上图中3号箭头处,那就会出现详细的文件数据了。 如下图所示:
如上图所示,按下2号箭头处让加号 (+) 展开,妳就能够看到更详细的文件数据。然后拉动4号箭头处的移动钮, 你就能够看到3号箭头处的更详细的信息,包括文件大小、类型、更动时间、所属用户与群组等参数数据。 其他更详细的数据就请自己玩玩吧!
如果不想要玩KDE了,请按下『K菜单』,然后选择『注销』功能,就会出现如下图标:
如上图所示,画面最上方的『vbird』指的是你的帐号,如果你使用不同的帐号登录,这里就会有不同的帐号名称。 至于画面中的三个按钮功能为:
至于更多的X window相关的使用技巧,以及相关的软件应用,鸟哥这里就不多说了, 因为鸟哥着重在Linux操作系统的基础应用以及网络服务器的应用啊! ^_^ 如果你还真的有兴趣, 建议你可以前往杨老师的网站上看看喔!http://apt.nc.hcc.edu.tw/docs/FC3_X/ 。
一般来说,我们是可以手动来直接修改X Window的设置档的,不过,修改完成之后的设置项目并不会立刻被加载, 必须要重新启动X才行(特别注意,不是重新开机,而是重新启动X!) 。那么如何重新启动X呢? 最简单的方法就是:
第二个方法比较有趣,[backspace]是倒退键,你按下三个按钮后X Window立刻会被重新启动。 如果你的X Window因为不明原因导致有点问题时,也可以利用这个方法来重新启动X喔!^_^
我们前面一直谈到的是X Window的窗口管理员环境,那么在这里面有没有纯文本接口的环境啊? 当然有啊!但是,要怎么切换X Window与文本模式呢?注意喔,通常我们也称文本模式为终端机接口, terminal 或 console喔!Linux缺省的情况下会提供六个Terminal来让用户登录, 切换的方式为使用:[Ctrl] + [Alt] + [F1]~[F6]的组合按钮。
那这六个终端接口如何命名呢,系统会将[F1] ~ [F6]命名为tty1 ~ tty6的操作接口环境。 也就是说,当你按下[crtl] + [Alt] + [F1]这三个组合按钮时 (按着[ctrl]与[Alt]不放,再按下[F1]功能键), 就会进入到tty1的terminal接口中了。同样的[F2]就是tty2啰!那么如何回到刚刚的X窗口接口呢?很简单啊!按下[Ctrl] + [Alt] + [F7]就可以了!我们整理一下登录的环境如下:
在Linux缺省的登录模式中,主要分为两种,一种是仅有纯文本接口(所谓的运行等级run level 3)的登录环境,在这种环境中你可以有tty1~tty6的终端接口,但是并没有图形窗口接口的环境喔。 另一种则是图形接口的登录环境(所谓的运行等级run level 5),这也是我们第四章安装妥当后的缺省环境! 在这个环境中你就具有tty1~tty7了!其中的tty7就是开机完成后的缺省等待登录的图形环境!
如果你是以纯文本环境启动Linux的,缺省的tty7是没有东西的!万一如此的话,那要怎么启动X窗口画面呢? 你可以在tty1~tty6的任意一个终端接口使用你的帐号登录后(登录的方法下一小节会介绍), 然后下达如下的指令即可:
[vbird@www ~]$ startx
不过startx这个指令并非万灵丹,你要让startx生效至少需要底下这几件事情的配合:
刚刚我们谈到的Linux启动时可以选择纯文本或者是窗口环境,也谈到了运行等级(run level)这东西! Linux缺省提供了七个Run level给我们使用,其中最常用到的就是run level 3与run level 5这两者了。 如果你想要让Linux在下次开机时使用纯文本环境(run level 3)来登录, 只要修订一下/etc/inittab这个文件的内容,就能够在下次重新开机时生效了! 因为我们尚未提到vi以及开机过程的详细信息, 所以啊,这部分得到系统管理员篇幅的时候再说明!别担心,再仔细的看下去吧!
刚刚你如果有按下[Ctrl] + [Alt] + [F1]就可以来到tty1的登录画面,而如果你是使用纯文本接口(其实是run level 3)启动Linux主机的话,那么缺省就是会来到tty1这个环境中。这个环境的等待登录的画面有点像这样:
CentOS release 5.3 (Final)
Kernel 2.6.18-128.el5 on an i686
www login: vbird
Password:
[vbird@www ~]$ _
上面显示的内容是这样的:
好了这样就是登录主机了!很快乐吧!耶~
另外,再次强调,在Linux系统下最好常使用一般帐号来登录即可,所以上例中鸟哥是以自己的帐号vbird来登录的。 因为系统管理员帐号(root)具有无穷大的权力,例如他可以删除任何一个文件或目录。因此若你以root身份登录Linux系统, 一个不小心下错指令,这个时候可不是『欲哭无泪』就能够解决的了问题的~
因此,一个称职的网络/系统管理人员,通常都会具有两个帐号,平时以自己的一般帐号来使用Linux主机的任何资源, 有需要动用到系统功能修订时,才会转换身份成为root呢!所以,鸟哥强烈建议你创建一个普通的帐号来供自己平时使用喔! 更详细的帐号消息,我们会在后续的『第十四章帐号管理』再次提及! 这里先有概念即可!
那么如何离开系统呢?其实应该说『注销Linux』才对!注销很简单,直接这样做:
[vbird@www ~]$ exit
就能够注销Linux了。但是请注意:『离开系统并不是关机!』 基本上,Linux本身已经有相当多的工作在进行,你的登录也仅是其中的一个『工作』而已, 所以当你离开时,这次这个登录的工作就停止了,但此时Linux其他的工作是还是继续在进行的! 本章后面我们再来提如何正确的关机,这里先创建起这个概念即可!
其实我们都是通过『程序』在跟系统作沟通的,本章上面提到的窗口管理员或文本模式都是一组或一只程序在负责我们所想要完成的指令。 文本模式登录后所取得的程序被称为壳(Shell),这是因为这支程序负责最外面跟用户(我们)沟通,所以才被戏称为壳程序! 更多与操作系统及壳程序的相关性可以参考第零章、计算机概论内的说明。
我们Linux的壳程序就是厉害的bash这一支!关于更多的bash我们在第三篇再来介绍。现在让我们来练一练打字吧!
其实整个指令下达的方式很简单,你只要记得几个重要的概念就可以了。 举例来说,你可以这样下达指令的:
[vbird@www ~]$ command [-options] parameter1 parameter2 ... 指令 选项 参数(1) 参数(2) 说明: 0. 一行指令中第一个输入的部分绝对是『指令(command)』或『可运行文件』 1. command 为指令的名称,例如变换路径的指令为 cd 等等; 2. 中刮号[]并不存在于实际的指令中,而加入选项设置时,通常选项前会带 - 号, 例如 -h;有时候会使用选项的完整全名,则选项前带有 -- 符号,例如 --help; 3. parameter1 parameter2.. 为依附在选项后面的参数,或者是 command 的参数; 4. 指令, 选项, 参数等这几个咚咚中间以空格来区分,不论空几格 shell 都视为一格; 5. 按下[Enter]按键后,该指令就立即运行。[Enter]按键代表着一行指令的开始启动。 6. 指令太长的时候,可以使用反斜线 (\) 来跳脱[Enter]符号,使指令连续到下一行。 注意!反斜线后就立刻接特殊字符,才能跳脱! 其他: a. 在 Linux 系统中,英文大小写字母是不一样的。举例来说, cd 与 CD 并不同。 b. 更多的介绍等到第十一章 bash 时,再来详述。
注意到上面的说明当中,『第一个被输入的数据绝对是指令或者是可运行的文件』! 这个是很重要的概念喔!还有,按下[Enter]键表示要开始运行此一命令的意思。我们来实际操作一下: 以ls这个『指令』列出『自己家目录(~)』下的『所有隐藏档与相关的文件属性』, 要达成上述的要求需要加入 -al 这样的选项,所以:
[vbird@www ~]$ ls -al ~ [vbird@www ~]$ ls -al ~ [vbird@www ~]$ ls -a -l ~
上面这三个指令的下达方式是一模一样的运行结果喔!为什么?请参考上面的说明吧! 关于更详细的文本模式使用方式,我们会在第十一章认识BASH再来强调喔! 此外,请特别留意,在Linux的环境中, 『大小写字母是不一样的东西!』也就是说,在Linux底下, VBird与vbird这两个文件是『完全不一样的』文件呢!所以, 你在下达指令的时候千万要注意到指令是大写还是小写。例如当输入底下这个指令的时候,看看有什么现象:
[vbird@www ~]$ date <==结果显示日期与时间 [vbird@www ~]$ Date <==结果显示找不到指令 [vbird@www ~]$ DATE <==结果显示找不到指令
很好玩吧!只是改变小写成为大写而已,该指令就变的不存在了! 因此,请千万记得这个状态呦!
另外,很多时候你会发现,咦!怎么我输入指令之后显示的结果的是乱码? 这跟鸟哥说的不一样啊!呵呵!不要紧张~我们前面提到过,Linux是可以支持多国语系的,若可能的话, 屏幕的消息是会以该支持语系来输出的。但是,我们的终端机接口(terminal)在缺省的情况下, 无法支持以中文编码输出数据的。这个时候,我们就得将支持语系改为英文,才能够以英文显示出正确的消息。 那怎么做呢?你可以这样做:
1. 显示目前所支持的语系 [vbird@www ~]$ echo $LANG zh_TW.UTF-8 # 上面的意思是说,目前的语系(LANG)为zh_TW.UTF-8,亦即台湾繁体中文的万国码 2. 修改语系成为英文语系 [vbird@www ~]$ LANG=en_US # 注意到上面的指令中没有空白字符,且英文语系为en_US才对喔! [vbird@www ~]$ echo $LANG en_US # 再次确认一下,结果出现,确实是en_US这个英文语系!
注意一下,那个『LANG=en_US』是连续输入的,等号两边并没有空白字符喔! 这样一来,就能够在『这次的登录』察看英文消息啰!为什么说是『这次的登录』呢? 因为,如果你注销Linux后,刚刚下达的指令就没有用啦! ^_^,这个我们会在第十一章再好好聊一聊的!好啰,底下我们来练习一下一些简单的指令, 好让你可以了解指令下达方式的模式:
底下我们立刻来操作几个简单的指令看看啰!
如果在文本接口中想要知道目前Linux系统的时间,那么就直接在指令列模式输入date即可显示:
[vbird@www ~]$ date
Mon Aug 17 17:02:52 CST 2009
上面显示的是:星期一, 八月十七日, 17:02 分, 52秒,在 2009 年的 CST 时区!台湾在CST时区中啦! 请赶快动手做做看呦!好了,那么如果我想要让这个程序显示出『2009/08/17』这样的日期显示方式呢? 那么就使用date的格式化输出功能吧!
[vbird@www ~]$ date +%Y/%m/%d 2009/08/17 [vbird@www ~]$ date +%H:%M 17:04
那个『+%Y%m%d』就是date指令的一些参数功能啦!很好玩吧!那你问我, 鸟哥怎么知道这些参数的啊?要背起来吗?当然不必啦!底下再告诉你怎么查这些参数啰!
从上面的例子当中我们也可以知道,指令之后的选项除了前面带有减号『-』之外,某些特殊情况下, 选项或参数前面也会带有正号『+』的情况!这部份可不要轻易的忘记了呢!
那如果我想要列出目前这个月份的月历呢?呵呵!直接给他下达cal即可!
[vbird@www ~]$ cal August 2009 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
除了本月的日历之外,连同今日所在处都会有反白的显示呢!真有趣!cal (calendar)这个指令可以做的事情还很多,例如你可以显示整年的月历情况:
[vbird@www ~]$ cal 2009 2009 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 1 2 1 2 3 4 5 6 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13 12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20 19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27 26 27 28 29 30 24 25 26 27 28 29 30 28 29 30 31 ....(以下省略)....
基本上cal这个指令可以接的语法为:
[vbird@www ~]$ cal [month] [year]
所以,如果我想要知道2009年10月的月历,可以直接下达:
[vbird@www ~]$ cal 10 2009
October 2009
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
那请问今年有没有13月啊?来测试一下这个指令的正确性吧!下达下列指令看看:
[vbird@www ~]$ cal 13 2009
cal: illegal month value: use 1-12
cal竟然会告诉我们『错误的月份,请使用1-12』这样的信息呢!所以, 未来你可以很轻易的就以cal来取得日历上面的日期啰!简直就是万年历啦! ^_^。 另外,由这个cal指令的练习我们也可以知道,某些指令有特殊的参数存在, 若输入错误的参数,则该指令会有错误消息的提示,通过这个提示我们可以借以了解指令下达错误之处。 这个练习的结果请牢记在心中喔!
如果在文本模式当中,突然想要作一些简单的加减乘除,偏偏手边又没有计算机!这个时候要笔算吗? 不需要啦!我们的Linux有提供一支计算程序,那就是bc喔。你在指令列输入bc后,屏幕会显示出版本信息, 之后就进入到等待指示的阶段。如下所示:
[vbird@www ~]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. _ <==这个时候,光标会停留在这里等待你的输入
事实上,我们是『进入到bc这个软件的工作环境当中』了! 就好像我们在Windows里面使用『小算盘』一样!所以,我们底下尝试输入的数据, 都是在bc程序当中在进行运算的动作。所以啰,你输入的数据当然就得要符合bc的要求才行! 在基本的bc计算机操作之前,先告知几个使用的操作符好了:
好!让我们来使用bc计算一些咚咚吧!
[vbird@www ~]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 1+2+3+4 <==只有加法时 10 7-8+3 2 10*52 520 10%3 <==计算『余数』 1 10^2 100 10/100 <==这个最奇怪!不是应该是 0.1 吗? 0 quit <==离开 bc 这个计算器
在上表当中,粗体字表示输入的数据,而在每个粗体字的底下就是输出的结果。 咦!每个计算都还算正确,怎么10/100会变成0呢?这是因为bc缺省仅输出整数,如果要输出小数点下位数,那么就必须要运行 scale=number ,那个number就是小数点位数,例如:
[vbird@www ~]$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=3 <==没错!就是这里!! 1/3 .333 340/2349 .144 quit
注意啊!要离开bc回到命令提示字符时,务必要输入『quit』来离开bc的软件环境喔! 好了!就是这样子啦!简单的很吧!以后你可以轻轻松松的进行加减乘除啦!
从上面的练习我们大概可以知道在指令列模式里面下达指令时,会有两种主要的情况:
我们以一个简单的图标来说明:
如图2.2.1所示,上方指令下达后立即显示消息且立刻回到命令提示字符的环境。 如果有进入软件功能的环境(例如上面的bc软件),那么就得要使用该软件的结束指令 (例如在bc环境中输入quit)才能够回到命令提示字符中!那你怎么知道你是否在命令提示字符的环境呢? 很简单!你只要看到光标是在『[vbird@www ~]$』这种提示字符后面, 那就是等待输入指令的环境了。很容易判断吧!不过初学者还是很容易忘记啦!
在继续后面章节的学习之前,这里很需要跟大家再来报告一件事,那就是我们的文本模式里头具有很多的功能组合键, 这些按键可以辅助我们进行指令的编写与程序的中断呢!这几个按键请大家务必要记住的!很重要喔!
[Tab]按键就是在键盘的大写灯切换按键([Caps Lock])上面的那个按键!在各种Unix-Like的Shell当中, 这个[Tab]按键算是Linux的Bash shell最棒的功能之一了!他具有『命令补全』与『文件补齐』的功能喔! 重点是,可以避免我们打错指令或文件名称呢!很棒吧!但是[Tab]按键在不同的地方输入,会有不一样的结果喔! 我们举下面的例子来说明。上一小节我们不是提到 cal 这个指令吗?如果我在指令列输入 ca 再按两次 [tab] 按键, 会出现什么消息?
[vbird@www ~]$ ca[tab][tab] <==[tab]按键是紧接在 a 字母后面! cadaver callgrind_control capifax card cal cameratopam capifaxrcvd case caller cancel capiinfo cat callgrind_annotate cancel.cups captoinfo catchsegv # 上面的 [tab] 指的是『按下那个tab键』,不是要你输入中括号内的tab啦!
发现什么事?所有以ca为开头的指令都被显示出来啦!很不错吧!那如果你输入『ls -al ~/.bash』再加两个[tab]会出现什么?
[vbird@www ~]$ ls -al ~/.bash[tab][tab]
.bash_history .bash_logout .bash_profile .bashrc
咦!在该目录下面所有以 .bash 为开头的文件名称都会被显示出来了呢!注意看上面两个例子喔, 我们按[tab]按键的地方如果是在command(第一个输入的数据)后面时,他就代表着 『命令补全』,如果是接在第二个字以后的,就会变成『文件补齐』的功能了!总结一下:
善用 [tab] 按键真的是个很好的习惯!可以让你避免掉很多输入错误的机会!
如果你在Linux底下输入了错误的指令或参数,有的时候这个指令或程序会在系统底下『跑不停』这个时候怎么办?别担心, 如果你想让当前的程序『停掉』的话,可以输入:[Ctrl]与c按键(先按着[Ctrl]不放,且再按下c按键,是组合按键), 那就是中断目前程序的按键啦!举例来说,如果你输入了『find /』这个指令时,系统会开始跑一些东西(先不要理会这个指令串的意义),此时你给他按下 [Ctrl]-c 组合按键,嘿嘿!是否立刻发现这个指令串被终止了!就是这样的意思啦!
[vbird@www ~]$ find / ....(一堆东西都省略).... # 此时屏幕会很花,你看不到命令提示字符的!直接按下[ctrl]-c即可! [vbird@www ~]$ <==此时提示字符就会回来了!find程序就被中断!
不过你应该要注意的是,这个组合键是可以将正在运作中的指令中断的, 如果你正在运作比较重要的指令,可别急着使用这个组合按键喔! ^_^
那么[Ctrl]-d是什么呢?就是[Ctrl]与d按键的组合啊!这个组合按键通常代表着: 『键盘输入结束(End Of File, EOF 或 End Of Input)』的意思! 另外,他也可以用来取代exit的输入呢!例如你想要直接离开文本接口,可以直接按下[Ctrl]-d就能够直接离开了(相当于输入exit啊!)。
总之,在Linux底下,文本接口的功能是很强悍的!要多多的学习他,而要学习他的基础要诀就是...多使用、多熟悉啦!
万一我下达了错误的指令怎么办?不要紧呀!你可以借由屏幕上面显示的错误消息来了解你的问题点, 那就很容易知道如何改善这个错误消息啰!举个例子来说,假如想运行date却因为大小写打错成为DATE时, 这个错误的消息是这样显示的:
[vbird@www ~]$ DATE
-bash: DATE: command not found
上面那个bash:表示的是我们的Shell的名称, 本小节一开始就谈到过Linux的缺省壳程序就是bash啰! 那么上面的例子说明了bash有错误,什么错误呢?bash告诉你:
DATE: command not found
字面上的意思是说『指令找不到』,那个指令呢?就是DATE这个指令啦! 所以说,系统上面可能并没有DATE这个指令啰!就是这么简单!通常出现『command not found』的可能原因为:
另外常见的错误就是我们曾经看过的例子,如下所示:
[vbird@www ~]$ cal 13 2009
cal: illegal month value: use 1-12
屏幕会告诉我们错误的消息啦!照着屏幕的消息去处理即可解决你的错误啦!是否很简单啊! 因此,以后如果出现了问题,屏幕上的消息真的是很重要的呢!不要忽略了他呦!
介绍这几个指令让你玩一玩先,更详细的指令操作方法我们会在第三篇的时候再进行介绍! 现在让我们来想一想,万一我在操作date这个指令的时候,手边又没有这本书,我要怎么知道要如何加那些奇怪的参数, 好让输出的结果符合我想要的输出格式呢?嘿嘿!到下一节鸟哥来告诉你怎么办吧!
先来了解一下Linux有多少指令呢?在文本模式下,你可以直接按下两个[Tab]按键,看看总共有多少指令可以让你用?
[vbird@www ~]$ <==在这里不要输入任何字符,直接输入两次[tab]按键 Display all 2450 possibilities? (y or n) <==如果不想要看,按 n 离开
如上所示,鸟哥安装的这个系统中,少说也有2000多个以上的指令可以让vbird这个帐号使用。 那在Linux里面到底要不要背『指令』啊?可以啊!你背啊!这种事,鸟哥这个『忘性』特佳的老人家实在是背不起来 @_@ ~当然啦,有的时候为了要考试(例如一些认证考试等等的)还是需要背一些重要的指令与选项的! 不过,鸟哥主要还是以理解『在什么情况下,应该要使用哪方面的指令』为准的!
既然鸟哥说不需要背指令,那么我们如何知道每个指令的详细用法?还有,某些设置档的内容到底是什么? 这个可就不需要担心了!因为在Linux上开发的软件大多数都是自由软件,而这些软件的开发者为了让大家能够了解指令的用法, 都会自行制作很多的文档,而这些文档也可以直接在在线就能够轻易的被用户查找出来喔!很不赖吧! 这根本就是『在线说明文档』嘛!哈哈!没错!确实如此。我们底下就来谈一谈,Linux到底有多少的在线文档数据呢?
嗄?不知道怎么使用date这个指令?嘿嘿!不要担心,我们Linux上面的在线求助系统已经都帮你想好要怎么办了, 所以你只要使用简单的方法去寻找一下说明的内容,马上就清清楚楚的知道该指令的用法了!怎么看呢?就是找男人(man) 呀!喔!不是啦!这个man是manual(操作说明)的简写啦!只要下达:『man date』 马上就会有清楚的说明出现在你面前喔!如下所示:
[vbird@www ~]$ LANG="en" # 还记得这个咚咚的用意吧?前面提过了,是为了『语系』的需要啊!下达过一次即可! [vbird@www ~]$ man date DATE(1) User Commands DATE(1) # 请注意上面这个括号内的数字 NAME <==这个指令的完整全名,如下所示为date且说明简单用途为设置与显示日期/时间 date - print or set the system date and time SYNOPSIS <==这个指令的基本语法如下所示 date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION <==详细说明刚刚语法谈到的选项与参数的用法 Display the current time in the given FORMAT, or set the system date. -d, --date=STRING <==左边-d为短选项名称,右边--date为完整选项名称 display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE -r, --reference=FILE display the last modification time of FILE ....(中间省略).... # 找到了!底下就是格式化输出的详细数据! FORMAT controls the output. The only valid option for the second form specifies Coordinated Universal Time. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中间省略).... ENVIRONMENT <==与这个指令相关的环境参数有如下的说明 TZ Specifies the timezone, unless overridden by command line parameters. If neither is specified, the setting from /etc/localtime is used. AUTHOR <==这个指令的作者啦! Written by David MacKenzie. REPORTING BUGS <==有问题请留言给底下的email的意思! Report bugs to <bug-coreutils@gnu.org>. COPYRIGHT <==受到著作权法的保护!用的就是 GPL 了! Copyright ? 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent permitted by law. SEE ALSO <==这个重要,你还可以从哪里查到与date相关的说明文档之意 The full documentation for date is maintained as a Texinfo manual. If the info and date programs are properly installed at your site, the command info date should give you access to the complete manual. date 5.97 May 2006 DATE(1)
看(鸟哥没骂人!)马上就知道一大堆的用法了!如此一来,不就可以知道date的相关选项与参数了吗?真方便! 而出现的这个屏幕画面,我们称呼他为man page, 你可以在里头查找他的用法与相关的参数说明。如果仔细一点来看这个man page的话,你会发现几个有趣的东西。
首先,在上个表格的第一行,你可以看到的是:『DATE(1)』,DATE我们知道是指令的名称, 那么(1)代表什么呢?他代表的是『一般用户可使用的指令』的意思!咦!还有这个用意啊!呵呵! 没错~在查找数据的后面的数字是有意义的喔!他可以帮助我们了解或者是直接查找相关的数据。 常见的几个数字的意义是这样的:
代号 | 代表内容 |
1 | 用户在shell环境中可以操作的指令或可运行档 |
2 | 系统内核可调用的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library),大部分为C的函数库(libc) |
4 | 设备文件的说明,通常在/dev下的文件 |
5 | 设置档或者是某些文件的格式 |
6 | 游戏(games) |
7 | 惯例与协定等,例如Linux文件系统、网络协定、ASCII code等等的说明 |
8 | 系统管理员可用的管理指令 |
9 | 跟kernel有关的文档 |
上述的表格内容可以使用『man 7 man』来更详细的取得说明。通过这张表格的说明, 未来你如果使用man page在察看某些数据时,就会知道该指令/文件所代表的基本意义是什么了。 举例来说,如果你下达了『man null』时,会出现的第一行是:『NULL(4)』,对照一下上面的数字意义, 嘿嘿!原来null这个玩意儿竟然是一个『设备文件』呢!很容易了解了吧!
再来,man page的内容也分成好几个部分来加以介绍该指令呢!就是上头man date那个表格内, 以NAME作为开始介绍,最后还有个SEE ALSO来作为结束。基本上,man page大致分成底下这几个部分:
代号 | 内容说明 |
NAME | 简短的指令、数据名称说明 |
SYNOPSIS | 简短的指令下达语法(syntax)简介 |
DESCRIPTION | 较为完整的说明,这部分最好仔细看看! |
OPTIONS | 针对 SYNOPSIS 部分中,有枚举的所有可用的选项说明 |
COMMANDS | 当这个程序(软件)在运行的时候,可以在此程序(软件)中下达的指令 |
FILES | 这个程序或数据所使用或参考或链接到的某些文件 |
SEE ALSO | 可以参考的,跟这个指令或数据有相关的其他说明! |
EXAMPLE | 一些可以参考的范例 |
BUGS | 是否有相关的臭虫! |
有时候除了这些外,还可能会看到Authors与Copyright等,不过也有很多时候仅有NAME与DESCRIPTION等部分。 通常鸟哥在查找某个数据时是这样来查阅的:
大致上了解了man page的内容后,那么在man page当中我还可以利用哪些按键来帮忙查阅呢?首先, 如果要向下翻页的话,可以按下键盘的空白键,也可以使用[Page Up]与[Page Down]来翻页呢!同时,如果你知道某些关键字的话, 那么可以在任何时候输入『/word』,来主动搜索关键字!例如在上面的搜索当中,我输入了『/date』会变成怎样?
DATE(1) User Commands DATE(1) NAME date - print or set the system date and time SYNOPSIS date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION Display the current time in the given FORMAT, or set the system date. ....(中间省略).... /date <==只要按下/,光标就会跑到这个地方来,你就可以开始输入搜索字符串咯
看到了吗,当你按下『/』之后,光标就会移动到屏幕的最下面一行, 并等待你输入搜索的字符串了。此时,输入date后,man page就会开始搜索跟date有关的字符串, 并且移动到该区域呢!很方便吧!最后,如果要离开man page时,直接按下『 q 』就能够离开了。 我们将一些在man page常用的按键给他整理整理:
按键 | 进行工作 |
空白键 | 向下翻一页 |
[Page Down] | 向下翻一页 |
[Page Up] | 向上翻一页 |
[Home] | 去到第一页 |
[End] | 去到最后一页 |
/string | 向『下』搜索 string 这个字符串,如果要搜索 vbird 的话,就输入 /vbird |
?string | 向『上』搜索 string 这个字符串 |
n, N | 利用 / 或 ? 来搜索字符串时,可以用 n 来继续下一个搜索 (不论是 / 或 ?) ,可以利用 N 来进行『反向』搜索。举例来说,我以 /vbird 搜索 vbird 字符串, 那么可以 n 继续往下查找,用 N 往上查找。若以 ?vbird 向上查找 vbird 字符串, 那我可以用 n 继续『向上』查找,用 N 反向查找。 |
q | 结束这次的 man page |
要注意喔!上面的按键是在man page的画面当中才能使用的! 比较有趣的是那个搜索啦!我们可以往下或者是往上搜索某个字符串,例如要在man page内搜索vbird这个字符串, 可以输入 /vbird 或者是 ?vbird ,只不过一个是往下而一个是往上来搜索的。而要 重复搜索 某个字符串时,可以使用 n 或者是 N 来动作即可呢! 很方便吧!^_^
既然有man page,自然就是因为有一些文档数据,所以才能够以man page读出来啰!那么这些man page的数据 放在哪里呢?不同的distribution通常可能有点差异性,不过,通常是放在/usr/share/man这个目录里头,然而,我们可以通过修改他的man page搜索路径来改善这个目录的问题!修改/etc/man.config (有的版本为man.conf或manpath.conf)即可啰!至于更多的关于man的消息你可以使用『 man man 』来查找呦!关于更详细的设置,我们会在第十一章 bash 当中继续的说明喔!
在某些情况下,你可能知道要使用某些特定的指令或者是修改某些特定的设置档,但是偏偏忘记了该指令的完整名称。 有些时候则是你只记得该指令的部分关键字。这个时候你要如何查出来你所想要知道的man page呢? 我们以底下的几个例子来说明man这个指令有用的地方喔!
例题:
你可否查出来,系统中还有哪些跟『man』这个指令有关的说明文档呢?
答:
你可以使用底下的指令来查找一下:
[vbird@www ~]$ man -f man
man (1) - format and display the on-line manual pages
man (7) - macros to format man pages
man.config [man] (5) - configuration data for man
使用 -f 这个选项就可以取得更多与man相关的信息,而上面这个结果当中也有提示了 (数字) 的内容,
举例来说,第二行的『 man (7) 』表示有个man (7)的说明文档存在喔!但是却有个man (1)存在啊!
那当我们下达『 man man 』的时候,到底是找到哪一个说明档呢?
其实,你可以指定不同的文档的,举例来说,上表当中的两个 man 你可以这样将他的文档叫出来:[vbird@www ~]$ man 1 man <==这里是用 man(1) 的文档数据 [vbird@www ~]$ man 7 man <==这里是用 man(7) 的文档数据你可以自行将上面两个指令输入一次看看,就知道,两个指令输出的结果是不同的。 那个1, 7就是分别取出在man page里面关于1与7相关数据的文档文件啰! 好了,那么万一我真的忘记了下达数字,只有输入『 man man 』时,那么取出的数据到底是1还是7啊? 这个就跟搜索的顺序有关了。搜索的顺序是记录在/etc/man.conf这个设置档当中, 先搜索到的那个说明档,就会先被显示出来! 一般来说,通常会先找到数字较小的那个啦!因为排序的关系啊!所以, man man 会跟 man 1 man 结果相同! |
除此之外,我们还可以利用『关键字』找到更多的说明文档数据喔!什么是关键字呢? 从上面的『man -f man』输出的结果中,我们知道其实输出的数据是:
当使用『man -f 指令』时,man只会找数据中的左边那个指令(或文件)的完整名称,有一点不同都不行! 但如果我想要找的是『关键字』呢?也就是说,我想要同时找上面说的两个地方的内容,只要该内容有关键字存在, 不需要完全相同的指令(或文件)就能够找到时,该怎么办?请看下个范例啰!
例题:
找出系统的说明档中,只要有man这个关键字就将该说明列出来。
答:[vbird@www ~]$ man -k man . [builtins] (1) - bash built-in commands, see bash(1) .TP 15 php [php] (1) - PHP Command Line Interface 'CLI' ....(中间省略).... zshall (1) - the Z shell meta-man page zshbuiltins (1) - zsh built-in commands zshzle (1) - zsh command line editor看到了吧!很多对吧!因为这个是利用关键字将说明文档里面只要含有man那个字眼的(不见得是完整字符串) 就将他取出来!很方便吧! ^_^(上面的结果有特殊字体的显示是为了方便读者查看, 实际的输出结果并不会有特别的颜色显示喔!) |
事实上,还有两个指令与man page有关呢!而这两个指令是man的简略写法说~就是这两个:
[vbird@www ~]$ whatis [指令或者是数据] <==相当于 man -f [指令或者是数据] [vbird@www ~]$ apropos [指令或者是数据] <==相当于 man -k [指令或者是数据]
而要注意的是,这两个特殊指令要能使用,必须要有创建 whatis 数据库才行!这个数据库的创建需要以 root 的身份下达如下的指令:
[root@www ~]# makewhatis
在所有的Unix Like系统当中,都可以利用 man 来查找指令或者是相关文件的用法; 但是,在Linux里面则又额外提供了一种在线求助的方法,那就是利用info这个好用的家伙啦!
基本上,info与man的用途其实差不多,都是用来查找指令的用法或者是文件的格式。但是与man page一口气输出一堆信息不同的是,info page则是将文档数据拆成一个一个的段落,每个段落用自己的页面来撰写, 并且在各个页面中还有类似网页的『超链接』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。 所以,你可以将info page想成是文本模式的网页显示数据啦!
不过你要查找的目标数据的说明文档必须要以info的格式来写成才能够使用info的特殊功能(例如超链接)。 而这个支持info指令的文档缺省是放置在/usr/share/info/这个目录当中的。 举例来说,info这个指令的说明文档有写成info格式,所以,你使用『 info info 』可以得到如下的画面:
[vbird@www ~]$ info info File: info.info, Node: Top, Next: Getting Started, Up: (dir) Info: An Introduction ********************* The GNU Project distributes most of its on-line manuals in the "Info format", which you read using an "Info reader". You are probably using an Info reader to read this now. ....(中间省略).... To read about expert-level Info commands, type `n' twice. This brings you to `Info for Experts', skipping over the `Getting Started' chapter. * Menu: * Getting Started:: Getting started using an Info reader. * Expert Info:: Info commands for experts. * Creating an Info File:: How to make your own Info file. * Index:: An index of topics, commands, and variables. --zz-Info: (info.info.gz)Top, 29 lines --Top------------------------------ Welcome to Info version 4.8. Type ? for help, m for menu item.
仔细的看到上面这个显示的结果,里面的第一行显示了很多的信息喔!第一行里面的数据意义为:
从第一行你可以知道这个节点的内容、来源与相关链接的信息。更有用的信息是,你可以通过直接按下N, P, U来去到下一个、上一个与上一层的节点(node)!非常的方便! 第一行之后就是针对这个节点的说明。在上表的范例中,第二行以后的说明就是针对info.info内的Top这个节点所做的。
再来,你也会看到有『Menu』那个咚咚吧!底下共分为四小节,分别是Getting Started等等的,我们可以使用上下左右按键来将光标移动到该文本或者『 * 』上面,按下Enter, 就可以前往该小节了!另外,也可以按下[Tab]按键,就可以快速的将光标在上表的画面中的node间移动, 真的是非常的方便好用。如果将info.info内的各个节点串在一起并绘制成图表的话,情况有点像底下这样:
如同上图所示,info的说明文档将内容分成多个node,并且每个node都有定位与链接。 在各链接之间还可以具有类似『超链接』的快速按钮,可以通过[tab]键在各个超链接间移动。 也可以使用U,P,N来在各个阶层与相关链接中显示!非常的不错用啦! 至于在info page当中可以使用的按键,可以整理成这样:
按键 | 进行工作 |
空白键 | 向下翻一页 |
[Page Down] | 向下翻一页 |
[Page Up] | 向上翻一页 |
[tab] | 在 node 之间移动,有 node 的地方,通常会以 * 显示。 |
[Enter] | 当光标在 node 上面时,按下 Enter 可以进入该 node 。 |
b | 移动光标到该 info 画面当中的第一个 node 处 |
e | 移动光标到该 info 画面当中的最后一个 node 处 |
n | 前往下一个 node 处 |
p | 前往上一个 node 处 |
u | 向上移动一层 |
s(/) | 在 info page 当中进行搜索 |
h | 显示求助菜单 |
? | 指令一览表 |
q | 结束这次的 info page |
info page是只有Linux上面才有的产物,而且易读性增强很多~不过查找的指令说明要具有info page功能的话,得用info page的格式来写成在线求助文档才行!我们CentOS 5将info page的文档放置到/usr/share/info/目录中!至于非以info page格式写成的说明文档(就是man page),虽然也能够使用info来显示,不过其结果就会跟man相同。 举例来说,你可以下达『info man』就知道结果了! ^_^
刚刚前面说,一般而言,指令或者软件制作者,都会将自己的指令或者是软件的说明制作成『在线说明文档』! 但是,毕竟不是每个咚咚都需要做成在线说明文档的,还有相当多的说明需要额外的文档!此时,这个所谓的 How-To(如何做的意思)就很重要啦!还有,某些软件不只告诉你『如何做』, 还会有一些相关的原理会说明呢。
那么这些说明文档要摆在哪里呢?哈哈!就是摆在/usr/share/doc这个目录啦!所以说,你只要到这个目录底下, 就会发现好多好多的说明文档档啦!还不需要到网络上面找数据呢!厉害吧!^_^ 举例来说,你想要知道这一版的CentOS相关的各项信息,可以直接到底下的目录去瞧瞧:
那如果想要知道本章讲过多次的bash是什么,则可以到/usr/share/doc/bash-3.2/ 这个目录中去浏览一番!很多东西呦!而且/usr/share/doc这个目录下的数据主要是以套件(packages)为主的, 例如GCC这个套件的相关信息在/usr/share/doc/gcc-xxx(那个xxx表示版本的意思!)。 未来可得多多查阅这个目录喔! ^_^
总结上面的三个咚咚(man, info, /usr/share/doc/),请记住喔:
在Linux系统当中有非常多的文书编辑器存在,其中最重要的就是后续章节我们会谈到的vi这家伙! 不过其实还有很多不错用的文书编辑器存在的!在这里我们就介绍一下简单的nano这一支文书编辑器来玩玩先!
nano的使用其实很简单,你可以直接加上文件名就能够打开一个旧档或新档!底下我们就来打开一个名为text.txt的文件名来看看:
[vbird@www ~]$ nano text.txt # 不管text.txt存不存在都没有关系!存在就打开旧档,不存在就打开新档 GNU nano 1.3.12 File: text.txt <==这个是光标所在处 [ New File ] ^G Get Help^O WriteOut^R Read Fil^Y Prev Pag^K Cut Text^C Cur Pos ^X Exit ^J Justify ^W Where Is^V Next Pag^U UnCut Te^T To Spell # 上面两行是指令说明列,其中^代表的是[ctrl]的意思
如上图所示,你可以看到第一行反白的部分,那仅是在声明nano的版本与文件名(File: text.txt)而已。 之后你会看到最底下的三行,分别是文件的状态(New File)与两行指令说明列。指令说明列反白的部分就是组合键, 接的则是该组合键的功能。那个指数符号(^)代表的是键盘的[Ctrl]按键啦!底下先来说说比较重要的几个组合按键:
比较常见的功能是这些,如果你想要取得更完整的说明,可以在nano的画面中按下[ctrl]-G或者是[F1]按键, 就能够显示出完整的naon内指令说明了。好了,请你在上述的画面中随便输入许多字, 输入完毕之后就保存后离开,如下所示:
GNU nano 1.3.12 File: text.txt Type some words in this nano editor program. You can use [ctrl] plus some keywords to go to some functions. Hello every one. Bye bye. <==这个是由标所在处 [ New File ] ^G Get Help^O WriteOut^R Read Fil^Y Prev Pag^K Cut Text^C Cur Pos ^X Exit ^J Justify ^W Where Is^V Next Pag^U UnCut Te^T To Spell
此时按下[crtl]-X会出现类似下面的画面:
GNU nano 1.3.12 File: text.txt Type some words in this nano editor program. You can use [ctrl] plus some keywords to go to some functions. Hello every one. Bye bye. Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ? ▋ Y Yes N No ^C Cancel
如果不要保存数据只想要离开,可以按下N即可离开。如果确实是需要保存的,那么按下Y后,最后三行会出现如下画面:
File Name to Write: text.txt▋ <==可在这里修改文件名或直接按[enter] ^G Get Help ^T To Files M-M Mac Format M-P Prepend ^C Cancel M-D DOS Format M-A Append M-B Backup File
如果是单纯的想要保存而已,直接按下[enter]即可保存后离开nano程序。不过上图中最底下还有两行,我们知道指数符号代表[crtl], 那个M是代表什么呢?其实就是[alt]啰!其实nano也不需要记太多指令啦!只要知道怎么进入nano、怎么离开,怎么搜索字符串即可。 未来我们还会学习更有趣的vi呢!
OK!大概知道开机的方法,也知道基本的指令操作,而且还已经知道在线查找了,好累呦! 想去休息呢!那么如何关机呢?我想,很多朋友在DOS的年代已经有在玩电脑了! 在当时我们关掉DOS的系统时,常常是直接关掉电源开关,而 Windows 在你不爽的时候,按着电源开关四秒也可以关机!但是在Linux则相当的不建议这么做!
Why?在 Windows (非 NT 主机系统) 系统中,由于是单人假多任务的情况,所以即使你的电脑关机, 对于别人应该不会有影响才对!不过呢,在 Linux 底下,由于每个进程 (或者说是服务) 都是在在背景下运行的,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作, 例如浏览网页啦、发送信件啦以 FTP 发送文件啦等等的,如果你直接按下电源开关来关机时, 则其他人的数据可能就此中断!那可就伤脑筋了!
此外,最大的问题是,若不正常关机,则可能造成文件系统的毁损 (因为来不及将数据回写到文件中,所以有些服务的文件会有问题!)。所以正常情况下,要关机时需要注意底下几件事:
所以底下我们就来谈一谈几个与关机/重新开机相关的指令啰!
在第零章、计算机概论里面我们谈到过数据在电脑中运作的模式, 所有的数据都得要被读入内存后才能够被CPU所处理,但是数据又常常需要由内存写回硬盘当中(例如保存的动作)。 由于硬盘的速度太慢(相对于内存来说),如果常常让数据在内存与硬盘中来回写入/读出,系统的性能就不会太好。
因此在Linux系统中,为了加快数据的读取速度,所以在缺省的情况中, 某些已经加载内存中的数据将不会直接被写回硬盘,而是先暂存在内存当中,如此一来, 如果一个数据被你重复的改写,那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 在速度上一定是快上相当多的!
不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机 (例如停电或者是不小心踢到power)时,由于数据尚未被写入硬盘当中,哇!所以就会造成数据的更新不正常啦! 那要怎么办呢?这个时候就需要sync这个指令来进行数据的写入动作啦! 直接在文本接口下输入sync,那么在内存中尚未被更新的数据,就会被写入硬盘中!所以,这个指令在系统关机或重新开机之前, 很重要喔!最好多运行几次!
虽然目前的 shutdown/reboot/halt 等等指令均已经在关机前进行了 sync 这个工具的调用, 不过,多做几次总是比较放心点~呵呵~
[root@www ~]# sync
由于Linux的关机是那么重要的工作,因此除了你是在主机前面以tty7图形接口来登录系统时, 不论用什么身份都能够关机之外,若你是使用远程管理工具(如通过pietty使用ssh服务来从其他电脑登录主机), 那关机就只有root有权力而已喔!
嗯!那么就来关机试试看吧!我们较常使用的是shutdown这个指令,而这个指令会通知系统内的各个进程 (processes),并且将通知系统中的run-level内的一些服务来关闭。shutdown可以达成如下的工作:
那么shutdown的语法是如何呢?聪明的读者大概已经开始找『男人』了!没错,随时随地的 man 一下,是很不错的举动!好了,简单的语法规则为:
[root@www ~]# /sbin/shutdown [-t 秒] [-arkhncfF] 时间 [警告消息] 选项与参数: -t sec : -t 后面加秒数,亦即『过几秒后关机』的意思 -k : 不要真的关机,只是发送警告消息出去! -r : 在将系统的服务停掉之后就重新开机(常用) -h : 将系统的服务停掉后,立即关机。 (常用) -n : 不经过 init 进程,直接以 shutdown 的功能来关机 -f : 关机并开机之后,强制略过 fsck 的磁盘检查 -F : 系统重新开机之后,强制进行 fsck 的磁盘检查 -c : 取消已经在进行的 shutdown 指令内容。 时间 : 这是一定要加入的参数!指定系统关机的时间!时间的范例底下会说明。 范例: [root@www ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins' # 告诉大家,这部机器会在十分钟后关机!并且会显示在目前登录者的屏幕前方! # 至于参数有哪些呢?以下介绍几个吧!
此外,需要注意的是,时间参数请务必加入指令中,否则shutdown会自动跳到 run-level 1 (就是单人维护的登录情况),这样就伤脑筋了!底下提供几个时间参数的例子吧:
[root@www ~]# shutdown -h now 立刻关机,其中 now 相当于时间为 0 的状态 [root@www ~]# shutdown -h 20:25 系统在今天的 20:25 分会关机,若在21:25才下达此指令,则隔天才关机 [root@www ~]# shutdown -h +10 系统再过十分钟后自动关机 [root@www ~]# shutdown -r now 系统立刻重新开机 [root@www ~]# shutdown -r +30 'The system will reboot' 再过三十分钟系统会重新开机,并显示后面的消息给所有在在线的用户 [root@www ~]# shutdown -k now 'This system will reboot' 仅发出警告信件的参数!系统并不会关机啦!吓唬人!
还有三个指令可以进行重新开机与关机的任务,那就是reboot, halt, poweroff。 其实这三个指令调用的函数库都差不多,所以当你使用『man reboot』时,会同时出现三个指令的用法给你看呢。 其实鸟哥通常都只有记shutdown与reboot这两个指令啦!不过使用poweroff这个指令却比较简单就是了!^_^ 通常鸟哥在重新开机时,都会下达如下的指令喔:
[root@www ~]# sync; sync; sync; reboot
既然这些指令都能够关机或重新开机,那他有没有什么差异啊?基本上,在缺省的情况下, 这几个指令都会完成一样的工作!(因为halt会先调用shutdown,而shutdown最后会调用halt!)。 不过,shutdown可以依据目前已启动的服务来逐次关闭各服务后才关机;至于halt却能够在不理会目前系统状况下, 进行硬件关机的特殊功能!你可以在你的主机上面使用root进行底下两个指令来关机,比较看看差异在哪里喔!
[root@www ~]# shutdown -h now [root@www ~]# poweroff -f
更多halt与poweroff的选项功能,请务必使用man去查找一下喔!
本章上头有谈到过关于run level的问题。之前谈到的是系统运作的模式,分为纯文本(run level 3)及图形接口模式(run level 5)。除了这两种模式外,有没有其他模式呢?其实Linux共有七种运行等级, 七种等级的意义我们在后面会再谈到。本章你只要知道底下四种运行等级就好了:
那如何切换各模式呢?可以使用init这个指令来处理喔!也就是说,如果你想要关机的话, 除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的指令来关机:
[root@www ~]# init 0
事实上,Linux主机是很稳定的,除非是硬件问题与系统管理员不小心的动作,否则, 很难会造成一些无法挽回的错误的。但是,毕竟我们目前使用的可能是练习机,会常常开开关关的, 所以确实可能会有一些小问题发生。好了,我们先来简单的谈一谈,如果无法顺利开机时, 你应该如何解决。要注意的是,底下说到的内容很多都还没有开始介绍, 因此,看不懂也不要太紧张~在本书全部都读完且看第二遍时,你自然就会有感觉了! ^_^
在开机的过程中最容易遇到的问题就是硬盘可能有坏轨或文件系统发生错误(数据损毁)的情况, 这种情况虽然不容易发生在稳定的Linux系统下,不过由于不当的开关机行为, 还是可能会造成的,常见的发生原因可能有:
解决的方法其实很简单,不过因为出错磁区所挂载的目录不同,处理的流程困难度就有差异了。 举例来说,如果你的根目录『/』并没有损毁,那就很容易解决,如果根目录已经损毁了,那就比较麻烦!
假设你发生错误的partition是在/dev/sda7这一块,那么在开机的时候,屏幕应该会告诉你:press root password or ctrl+D : 这时候请输入root的密码登录系统,然后进行如下动作:
一般初学者喜欢将自己的硬盘只划分为一个大partition,亦即只有根目录, 那文件系统错误一定是根目录的问题啰!这时你可以将硬盘拔掉,接到另一台Linux系统的电脑上, 并且不要挂载(mount)该硬盘,然后以root的身份运行『 fsck /dev/sdb1 』(/dev/sdb1 指的是你的硬盘设备文件名,你要依你的实际状况来设置),这样就 OK 啰!
另外,也可以使用近年来很热门的Live CD,也就是利用光盘开机就能够进入Linux操作系统的特性, 你可以前往:『http://knoppix.tnc.edu.tw/』 这个网站来下载,并且刻录成为CD,这个时候先用Live CD光盘开机,然后使用fsck去修复原本的根目录, 例如: fsck /dev/sda1 ,就能够救回来了!
如果硬盘实在坏的离谱时,那就先将旧硬盘内的数据,能救出来的救出来,然后换一颗硬盘来重新安装Linux吧! 不要不愿意换硬盘啊!啥时后硬盘会坏掉谁也说不准的!
那么硬盘该如何预防发生文件系统错误的问题呢?可以参考底下说明:
常常有些朋友在设置好了Linux之后,结果root密码给他忘记去!要重新安装吗?不需要的, 你只要以单人维护模式登录即可更改你的root密码喔!由于lilo这个开机管理程序已经很少见了, 这里鸟哥使用grub开机管理程序作为范例来介绍啰!
先将系统重新开机,在读秒的时候按下任意键就会出现如同第四章图3.2的菜单画面,仔细看菜单底下的说明, 按下『e』就能够进入grub的编辑模式了。此时你看到的画面有点像底下这样:
root (hd0,0) kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.18-128.el5.img
此时,请将光标移动到kernel那一行,再按一次『 e 』进入kernel该行的编辑画面中, 然后在出现的画面当中,最后方输入 single :
kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet single
再按下『 Enter 』确定之后,按下 b 就可以开机进入单人维护模式了! 在这个模式底下,你会在tty1的地方不需要输入密码即可取得终端机的控制权(而且是使用root的身份喔!)。 之后就能够修改root的密码了!请使用底下的指令来修改root的密码喔!
[root@www ~]# passwd # 接下来系统会要求你输入两次新的密码,然后再来reboot即可顺利修订root密码了!
这里仅是介绍一个简单的处理方法而已,更多的原理与说明将会在后续的各相关章节介绍的喔!
CentOS release 5.3 (Final) Kernel \r on an \m