鸟哥的 Linux 私房菜
Linux 基础篇 | Linux 服务器篇 | Linux 企业应用篇 | 安全管理
     
 
第五章、首次登入与线上求助 man page
最近更新日期:2009/08/17
终于可以开始使用Linux这个有趣的系统了!由于Linux系统使用了非同步的磁碟/记忆体资料传输模式,同时又是个多人多工的环境, 所以你不能随便的不正常关机,关机有一定的程序喔!错误的关机方法可能会造成磁碟资料的损毁呢! 此外,Linux有多种不同的操作方式,图形介面与文字介面的操作有何不同? 我们能否在文字介面取得大量的指令说明,而不需要硬背某些指令的选项与参数等等。这都是这一章要来介绍的呢!


大标题的图示首次登入系统

登入系统有这么难吗?并不难啊!虽然说是这样说,然而很多人第一次登入Linux的感觉都是‘接下来我要干啥?’如果是以图形介面登入的话,或许还有很多好玩的事物, 但要是以文字介面登入的话,面对着一片黑压压的荧幕,还真不晓得要干嘛呢!为了让大家更了解如何正确的使用Linux, 正确的登入与离开系统还是需要说明的!


小标题的图示首次登入CentOS 5.x图形介面

开机就开机呀!怎么还有所谓的登入与离开呀?不是开机就能够用电脑了吗? 开什么玩笑,在Linux系统中由于是多人多工的环境,所以系统随时都有很多任务在进行,因此正确的开关机可是很重要的! 不正常的关机可能会导致文件系统错乱,造成资料的毁损呢!这也是为什么通常我们的Linux主机都会加挂一个不断电系统啰!

如果在第四章一切都顺利的将CentOS 5.x完成安装并且重新开机后, 应该就会出现如下的等待登入的图形画面才对。画面的左上方是CentOS 5的distribution说明, 而1号箭头所指处的四个文字则是可以改变工作环境的地方,2号箭头说明今天的日期/时间与主机名称(www.vbird.tsai), 3号箭头就是我们可以使用帐号登入的输入框框啰。

X等待登入的画面
图1.1.1、X等待登入的画面

让我们来了解一下上图1号箭头所指的那四个功能吧!先点选一下‘语言’按钮,你会发现荧幕出现很多可以选择的语系资料! 鸟哥撷取部分画面如下所示。在下图中你可以选择不同的中文或者是其他语言,等一下你登入后, 荧幕就会显示你所选择的语系画面了。不过要注意的是,如果你选择的语系的软件文件并没有被安装, 那么登入系统后就会出现很多乱码啊!如下图所示,鸟哥先选择台湾的繁体中文,然后按下‘改变语言’按钮即可。

选择语系的画面
图1.1.2、选择语系的画面

接下来让我们按一下‘作业阶段’按钮吧!按下作业阶段后荧幕就会出现如下的画面。 所谓的作业阶段指的是你可以使用不同的图形介面来操作整个Linux系统。 这个图形介面并不是只有将桌面背景更改而已,而是整个显示、控制、管理、图形软件都不相同了! 非常的好玩!目前CentOS 5.x预设至少就提供GNOME/KDE这两种图形介面(我们称为视窗管理员, Window Manager, 注1)。 如下图所示。CentOS 5.x预设使用的是GNOME这个玩意儿,如果你没有改变的话,那等一下就会登入GNOME的图形介面啰。

更改作业阶段的视窗示意图
图1.1.3、更改作业阶段的视窗示意图

接下来准备要登入啦!我们在经过第四章的安装过程后,理论上现在会有两个可用的帐号,以鸟哥的安装为例, 我有root及vbird两个可用的帐号喔!那第四章我们也说过,最好不要使用root啦!因此, 鸟哥就在图1.1.1的地方开始用vbird来登入了,如下所示,记得输入完毕后要按‘Enter’喔!

输入使用者帐号的地方
图1.1.4、输入使用者帐号的地方

接着系统会要你输入密码,此时请在密码栏填入该帐号的密码!在你输入密码时该栏位会显示黑点来取代! 这是为了保密啦!输入完毕后请按下‘Enter’开始登入啰!

输入密码的示意图
图1.1.5、输入密码的示意图

由于鸟哥在图1.1.2曾经修改过语系资料,因此系统就会询问你, 是否要将刚刚的设定变更成为预设值?还是只有这次登入才使用呢?你可以按下‘成为预设值’, 让你这次的决定套用到未来的操作喔!OK!让我们开始来玩一玩GNOME这个预设的视窗管理员吧!

询问是否将设定值更改为预设值的视窗
图1.1.6、询问是否将设定值更改为预设值的视窗

小标题的图示GNOME的操作与登出

终于给他看到图形介面啦!真是很开心吧!如下图所示,整个GNOME的视窗大约分为三个部分:

  • 上方工作列(control panel)
    上半部有应用程序、位置与系统及快捷键的地方,可以看成是工作列,你可以使用滑鼠在1号箭头处 (应用程序) 点击一下, 就会有更多的程序集出现!然后移动滑鼠就能够使用各个软件了。至于3号箭头所指的地方,就是系统时间与声音调整。 另外,在3号箭头的左边不是有个打X的符号吗?那个是CentOS 5.x的线上更新系统(update)。由于我们尚未连上Internet, 所以这边就会显示X喔。

  • 桌面
    整个画面中央就是桌面啦!在桌面上预设有三个小按钮,例如箭头2所指的就是文件总管。你可以使用滑鼠连击两下就能够打开该功能。 其实电脑与个人资料夹都是文件总管啦!如果有执行各种程序,程序的显示也都是在桌面位置喔。

  • 下方工作列
    下方工作列的目的是将各工作显示在这里,可以方便使用者点选之用。其中4号箭头所指处为将所有工作最小化隐藏, 至于5号箭头处指的那四个玩意儿,就是四个虚拟桌面(Virtual Desktop)了!GNOME提供四个桌面给使用者操作, 你可以在那四个桌面随便点一点,看看有啥不同!尤其是当你有执行不同的程序时,就会发现他的功能啦! ^_^
GNOME的视窗画面示意图
图1.2.1、GNOME的视窗画面示意图

Linux桌面的使用方法几乎跟Windows一模一样,你可以在桌面上按下右键就可以有额外的选单出现; 你也可以直接按下桌面上的‘个人资料夹’,就会出现类似Windows的‘文件总管’的文件/目录管理视窗, 里面则出现你自己的工作目录;好了,让我们点击一下‘应用程序’那个按钮吧!看看下拉式选单中有什么软件可用! 如下图所示。你要注意的是,因为我们的Linux尚未连上Internet,所以线上更新系统会有警告讯息(2号箭头处), 请你将他关闭吧!

Tips:
关于‘个人资料夹’的内容,记得我们之前说过Linux是多人多工的作业系统吧? 每个人都会有自己的‘工作目录’,这个目录是使用者可以完全掌控的, 所以就称为‘使用者个人家目录’了。一般来说,家目录都在/home底下, 以鸟哥这次的登入为例,我的帐号是vbird,那么我的家目录就应该在/home/vbird/啰!
鸟哥的图示
应用程序的下拉式选单示意图
图1.2.2、应用程序的下拉式选单示意图
Tips:
那个线上升级的按钮不是不重要喔!而是因为我们尚未连上Internet所以这里才先将他略过的。 你的系统稳不稳定、安不安全与这个玩意儿相关性可大了!千万别小看他啰! 有兴趣的朋友可以到google先搜寻一下yum这个机制来看看先! ^_^ 因为你的Linux尚未线上更新过,所以先不要连上Internet喔!
鸟哥的图示

  • 使用文件总管

首先我们来了解一下常用的GNOME文件总管要怎么用?要说明的是,GNOME的文件总管其实称为‘鹦鹉螺(Nautilus)’, 只是我们比较习惯称呼文件总管就是了。^_^。当你在桌面中点选‘个人资料夹’就会出现如下图示。 预设鹦鹉螺是用小图示来显示文件,而且隐藏档也没有显示出来呢! 所以你只会看到一个文件。注意1号箭头所指的地方,你可以按下那个小按钮来切换到不同的目录去喔!

鹦鹉螺文件总管的预设显示画面
图1.2.3、鹦鹉螺文件总管的预设显示画面

鸟哥还是比较喜欢清单式的将所有资料都列出来,所以我们的设定需要修正一下。 请在上图中按下‘编辑’点选‘偏好设定’后,会出现如下图示,请将箭头所在处的两个地方修订一下, 包括以清单显示及显示隐藏档喔!填完就按下右下角的‘关闭’即可。

鹦鹉螺文件总管的偏好设定视窗
图1.2.4、鹦鹉螺文件总管的偏好设定视窗

将原本的画面关闭再重开一个文件总管,请如下图所示,按下‘显示’选择‘显示隐藏档’及‘以清单方式显示’后, 就可以发现到好多文件啰!什么是隐藏档呢?其实档名开头为小数点‘.’的, 那个文件就是隐藏档了。所以在如下图的画面中,你会看到多出来的文件档名都是小数点开头的!

家目录下的隐藏档资料
图1.2.5、家目录下的隐藏档资料

除了自己的家目录之外,你可以在上图的左下角‘vbird’处点一下,然后选择根目录(/),就会出现如下图示。 1号箭头告诉我们,这个vbird帐号无法登入该目录,所以有个红色的禁止图示;如果想要查阅某目录的内容, 如2号箭头所指处,你可以点一下三角形的图示,就能够将该目录内的资料捉出来了;最后,如同3号箭头所指的, 如果是出现纸张的图示,代表那是个文件而不是目录啰!

鹦鹉螺文件总管的目录/文件显示情况
图1.2.6、鹦鹉螺文件总管的目录/文件显示情况


  • 中文输入法

在CentOS 5.x当中所使用的中文输入法为SCIM软件,你要启动SCIM很简单,只要叫出任何一个能够输入文字的软件, 然后按下‘Ctrl’+‘Space(空白键)’就能够呼叫出来了!以下图为例,鸟哥执行‘附属应用程序’内的‘文字编辑’软件, 然后按下[ctrl]+[space]就出现下图。然后点一下图中的箭头所指处,你就会看到很多输入法了! 比较有趣的是那个‘新酷音’输入法, 其实那就是大家常用的新注音啦!可以自动挑字的输入法!不错用喔!

SCIM中文输入法呼叫示意图
图1.2.7、SCIM中文输入法呼叫示意图


  • 登出GNOME

如果你没有想要继续玩X Window了,那就登出吧!如何登出呢?如下图所示,点选‘系统’内的‘登出’即可。 要记得的是,登出前最好将所有不需要的程序都关闭了再登出啊!

登出GNOME的按钮
图1.2.8、登出GNOME的按钮

会有一个确认视窗跑出来给我们确认一下,就给他点选‘登出’吧!

登出GNOME的确认视窗
图1.2.9、登出GNOME的确认视窗

请注意喔,登出并不是关机!只是让你的帐号离开系统而已喔!


  • 其他练习

底下的例题请大家自行参考并且实作一下喔!题目很简单,所以鸟哥就不额外抓图了!

  • 如何在上方工作列中新增其他的图示(icons),让操作更方便?请尝试新增终端机图示;
  • 尝试浏览一下/etc这个目录内,有哪些文件/目录存在;
  • 请将/etc/crontab这个文件‘复制’到你的家目录中;
  • 请修改四个Virtual Desktop的底色图案,让他们都不相同;
  • 尝试修改荧幕解析度;

小标题的图示KDE的操作与登出

玩过了GNOME之后,接下来让我们来了解一下KDE这个也是很常见的视窗管理程序吧! 请回到图1.1.1中,在按下‘作业阶段’后请选择KDE,然后输入你的帐号密码来登入KDE的环境。 登入后的预设画面如下所示:

KDE登入后的预设画面
图1.3.1、KDE登入后的预设画面

上图中的箭头所指处的功能说明如下:

  • 桌面:上图中整个蓝色画面就是桌面。而一号箭头指的地方,一开始仅有垃圾桶而已,你可以自行增加其他的快速按钮在桌面! 当有工作被执行时,该工作就是显示在这个桌面的区域中;

  • 工作列快捷键:2号箭头指的地方就是KDE的K选单!你给他按一下该选单就会出现更多的选项功能。 感觉上就是开始功能表啰!至于K选单的右边还有很多的快捷按钮,你可以自行点选看看;

  • 虚拟桌面:3号箭头所指的就是虚拟桌面。与GNOME相似的,CentOS的KDE也提供四个虚拟桌面。 你可以在各个桌面分别放置不同的底图哩!自己玩看看吧!

  • 工作列:4号箭头处,当你有执行任何工作时,该工作的图示就会显示到这个地方。

  • 小时钟:5号箭头所指的地方就是目前的时间。预设是数位时钟,你可以将他改为圆形的小时钟喔!


  • KDE内的文件管理

同样的,得先来了解一下文件管理的软件啊!在GNOME文件总管称为鹦鹉螺, 在KDE文件总管称为‘Konqueror, 征服家’。你可以按下‘K选单’然后选择‘家目录’,如下所示:

开启征服家的方式之一
图1.3.2、开启征服家的方式之一

启动征服家预设会出现如下图所示的画面:

KDE的征服家显示文件资料图示
图1.3.3、KDE的征服家显示文件资料图示

如上图所示为征服家的预设显示情况。画面的左边有点类似目录的列表,右边则是文件详细的资讯。 而征服家可以让你仅选择使用者可以随意应用的家目录 (2号箭头处) 或者是整个系统的文件资讯 (1号箭头处)。 征服家预设显示的是家目录啦。3号箭头处指出该目录内有哪些资讯,4号箭头则是详细的文件参数啦。 接下来请点选‘Root资料夹’吧!让我们瞧瞧整个文件系统有些什么东西?

根目录资料的显示
图1.3.4、根目录资料的显示

如上图所示,当你点选Root资料夹,并且按下/etc那个资料夹后,画面右边就会出现/etc资料夹的文件内容了。 一开始文件是以小图示来显示,如果你按下清单图示,就是上图中3号箭头处,那就会出现详细的文件资料了。 如下图所示:

文件资料的详细清单显示
图1.3.5、文件资料的详细清单显示

如上图所示,按下2号箭头处让加号 (+) 展开,你就能够看到更详细的文件资料。然后拉动4号箭头处的移动钮, 你就能够看到3号箭头处的更详细的资讯,包括文件大小、类型、更动时间、所属使用者与群组等参数资料。 其他更详细的资料就请自己玩玩吧!


  • 登出KDE或关机

如果不想要玩KDE了,请按下‘K选单’,然后选择‘登出’功能,就会出现如下图示:

KDE的登出画面示意图
图1.3.6、KDE的登出画面示意图

如上图所示,画面最上方的‘vbird’指的是你的帐号,如果你使用不同的帐号登入,这里就会有不同的帐号名称。 至于画面中的三个按钮功能为:

  • ‘关闭目前的工作阶段’:就是登出而已,会回到图1.1.1等待登入的画面;
  • ‘关闭电脑’:就是关机的功能;
  • ‘重新启动电脑’:就是重新开机的功能!

至于更多的X window相关的使用技巧,以及相关的软件应用,鸟哥这里就不多说了, 因为鸟哥着重在Linux作业系统的基础应用以及网络服务器的应用啊! ^_^ 如果你还真的有兴趣, 建议你可以前往杨老师的网站上看看喔!http://apt.nc.hcc.edu.tw/docs/FC3_X/


  • 其他练习
  • 由‘K选单’-->‘寻找文件/资料夹’启动搜寻,并找寻档名为 crontab 的文件在哪里?
  • 工作列的最右方原本是数字形态的时钟,请将他改为图形显示的时钟;
  • 如何叫出控制台?控制台的‘区域性’里面的‘键盘配置’有何用处?


  • 重新启动X Window的快速按钮

一般来说,我们是可以手动来直接修改X Window的设定档的,不过,修改完成之后的设定项目并不会立刻被载入, 必须要重新启动X才行(特别注意,不是重新开机,而是重新启动X!) 。那么如何重新启动X呢? 最简单的方法就是:

  • 直接登出,然后再重新登入即可;
  • 在X的画面中直接按下[Alt] + [Ctrl] + [Backspace]

第二个方法比较有趣,[backspace]是倒退键,你按下三个按钮后X Window立刻会被重新启动。 如果你的X Window因为不明原因导致有点问题时,也可以利用这个方法来重新启动X喔!^_^


小标题的图示X window与文字模式的切换

我们前面一直谈到的是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]就可以了!我们整理一下登入的环境如下:

  • [Ctrl] + [Alt] + [F1] ~ [F6]  :文字介面登入 tty1 ~ tty6 终端机;
  • [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生效至少需要底下这几件事情的配合:

  • 你的tty7并没有其他的视窗软件正在运作(tty7必须是空出来的);
  • 你必须要已经安装了X Window system,并且X server是能够顺利启动的;
  • 你最好要有视窗管理员,例如GNOME/KDE或者是阳春的TWM等;
  • 启动X所必须要的服务,例如字型服务器(X Font Server, xfs)必须要先启动。

刚刚我们谈到的Linux启动时可以选择纯文字或者是视窗环境,也谈到了执行等级(run level)这东西! Linux预设提供了七个Run level给我们使用,其中最常用到的就是run level 3与run level 5这两者了。 如果你想要让Linux在下次开机时使用纯文字环境(run level 3)来登入, 只要修订一下/etc/inittab这个文件的内容,就能够在下次重新开机时生效了! 因为我们尚未提到vi以及开机过程的详细资讯, 所以啊,这部分得到系统管理员篇幅的时候再说明!别担心,再仔细的看下去吧!


小标题的图示在终端介面登入linux

刚刚你如果有按下[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 ~]$ _

    

上面显示的内容是这样的:

  1. CentOS release 5.3 (Final)
    显示Linux distribution的名称(CentOS)与版本(5.3);

  2. Kernel 2.6.18-128.el5 on an i686
    显示核心的版本为2.6.18-128.el5, 且目前这部主机的硬体等级为i686。如果是使用x86_64的Linux版本且安装到64位元的PC,那你的硬体等级就会是‘X86_64’喔!

  3. www login:
    那个www是你的主机名称。我们在第四章安装时有填写主机名称为: www.vbird.tsai,主机名称的显示通常只取第一个小数点前的字母,所以就成为www啦!至于login:则是一支可以让我们登入的程序。 你可以在login:后面输入你的帐号。以鸟哥为例,我输入的就是第四章建立的vbird那个帐号啦! 当然啰,你也可以使用root这个帐号来登入的。不过‘root’这个帐号代表在Linux系统下无穷的权力, 所以尽量不要使用root帐号来登入啦!

  4. Password:
    这一行则在第三行的vbird输入后才会出现,要你输入密码啰! 请注意,在输入密码的时候,荧幕上面‘不会显示任何的字样!’, 所以不要以为你的键盘坏掉去!很多初学者一开始到这里都会拼命的问!啊我的键盘怎么不能用...

  5. [vbird@www ~]$ _
    这一行则是正确登入之后才显示的讯息, 最左边的vbird显示的是‘目前使用者的帐号’,而@之后接的www则是‘主机名称’,至于最右边的~则指的是 ‘目前所在的目录’,那个$则是我们常常讲的‘提示字元’啦!
Tips:
那个 ~ 符号代表的是‘使用者的家目录’的意思,他是个‘变数!’ 这相关的意义我们会在后续的章节依序介绍到。举例来说,root的家目录在/root, 所以 ~ 就代表/root的意思。而vbird的家目录在/home/vbird, 所以如果你以vbird登入时,他看到的 ~ 就会等于/home/vbird喔!

至于提示字元方面,在Linux当中,预设root的提示字元为 # ,而一般身份使用者的提示字元为 $ 。

还有,上面的第一、第二行的内容其实是来自于/etc/issue这个文件喔!
鸟哥的图示

好了这样就是登入主机了!很快乐吧!耶~

另外,再次强调,在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后,刚刚下达的指令就没有用啦! ^_^,这个我们会在第十一章再好好聊一聊的!好啰,底下我们来练习一下一些简单的指令, 好让你可以了解指令下达方式的模式:


小标题的图示基础指令的操作

底下我们立刻来操作几个简单的指令看看啰!

  • 显示日期与时间的指令: date
  • 显示日历的指令: cal
  • 简单好用的计算机: bc


1. 显示日期的指令: date

如果在文字介面中想要知道目前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指令的一些参数功能啦!很好玩吧!那你问我, 鸟哥怎么知道这些参数的啊?要背起来吗?当然不必啦!底下再告诉你怎么查这些参数啰!

从上面的例子当中我们也可以知道,指令之后的选项除了前面带有减号‘-’之外,某些特殊情况下, 选项或参数前面也会带有正号‘+’的情况!这部份可不要轻易的忘记了呢!


2. 显示日历的指令: cal

那如果我想要列出目前这个月份的月历呢?呵呵!直接给他下达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指令的练习我们也可以知道,某些指令有特殊的参数存在, 若输入错误的参数,则该指令会有错误讯息的提示,透过这个提示我们可以藉以了解指令下达错误之处。 这个练习的结果请牢记在心中喔!


3. 简单好用的计算机: bc

如果在文字模式当中,突然想要作一些简单的加减乘除,偏偏手边又没有计算机!这个时候要笔算吗? 不需要啦!我们的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、指令下达的环境,上图为直接显示结果,下图为进入软件功能

如图2.2.1所示,上方指令下达后立即显示讯息且立刻回到命令提示字元的环境。 如果有进入软件功能的环境(例如上面的bc软件),那么就得要使用该软件的结束指令 (例如在bc环境中输入quit)才能够回到命令提示字元中!那你怎么知道你是否在命令提示字元的环境呢? 很简单!你只要看到游标是在‘[vbird@www ~]$’这种提示字元后面, 那就是等待输入指令的环境了。很容易判断吧!不过初学者还是很容易忘记啦!


小标题的图示重要的几个热键[Tab], [ctrl]-c, [ctrl]-d

在继续后面章节的学习之前,这里很需要跟大家再来报告一件事,那就是我们的文字模式里头具有很多的功能组合键, 这些按键可以辅助我们进行指令的编写与程序的中断呢!这几个按键请大家务必要记住的!很重要喔!


  • [Tab]按键

[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] 接在一串指令的第一个字的后面,则为命令补全;
  • [Tab] 接在一串指令的第二个字以后时,则为‘文件补齐’!

善用 [tab] 按键真的是个很好的习惯!可以让你避免掉很多输入错误的机会!


  • [Ctrl]-c 按键

如果你在Linux底下输入了错误的指令或参数,有的时候这个指令或程序会在系统底下‘跑不停’这个时候怎么办?别担心, 如果你想让当前的程序‘停掉’的话,可以输入:[Ctrl]与c按键(先按着[Ctrl]不放,且再按下c按键,是组合按键), 那就是中断目前程序的按键啦!举例来说,如果你输入了‘find /’这个指令时,系统会开始跑一些东西(先不要理会这个指令串的意义),此时你给他按下 [Ctrl]-c 组合按键,嘿嘿!是否立刻发现这个指令串被终止了!就是这样的意思啦!

[vbird@www ~]$ find /
....(一堆东西都省略)....
# 此时荧幕会很花,你看不到命令提示字元的!直接按下[ctrl]-c即可!
[vbird@www ~]$ <==此时提示字元就会回来了!find程序就被中断!
    

不过你应该要注意的是,这个组合键是可以将正在运作中的指令中断的, 如果你正在运作比较重要的指令,可别急着使用这个组合按键喔! ^_^


  • [Ctrl]-d 按键

那么[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’的可能原因为:

  • 这个指令不存在,因为该软件没有安装之故。解决方法就是安装该软件;
  • 这个指令所在的目录目前的用户并没有将他加入指令搜寻路径中,请参考bash的PATH说明;
  • 很简单!因为你打错字!

另外常见的错误就是我们曾经看过的例子,如下所示:

[vbird@www ~]$ cal 13 2009
cal: illegal month value: use 1-12
    

荧幕会告诉我们错误的讯息啦!照着荧幕的讯息去处理即可解决你的错误啦!是否很简单啊! 因此,以后如果出现了问题,荧幕上的讯息真的是很重要的呢!不要忽略了他呦!

介绍这几个指令让你玩一玩先,更详细的指令操作方法我们会在第三篇的时候再进行介绍! 现在让我们来想一想,万一我在操作date这个指令的时候,手边又没有这本书,我要怎么知道要如何加那些奇怪的参数, 好让输出的结果符合我想要的输出格式呢?嘿嘿!到下一节鸟哥来告诉你怎么办吧!


大标题的图示Linux系统的线上求助man page与info page

先来了解一下Linux有多少指令呢?在文字模式下,你可以直接按下两个[Tab]按键,看看总共有多少指令可以让你用?


[vbird@www ~]$ <==在这里不要输入任何字元,直接输入两次[tab]按键
Display all 2450 possibilities? (y or n) <==如果不想要看,按 n 离开
    

如上所示,鸟哥安装的这个系统中,少说也有2000多个以上的指令可以让vbird这个帐号使用。 那在Linux里面到底要不要背‘指令’啊?可以啊!你背啊!这种事,鸟哥这个‘忘性’特佳的老人家实在是背不起来 @_@ ~当然啦,有的时候为了要考试(例如一些认证考试等等的)还是需要背一些重要的指令与选项的! 不过,鸟哥主要还是以理解‘在什么情况下,应该要使用哪方面的指令’为准的!

既然鸟哥说不需要背指令,那么我们如何知道每个指令的详细用法?还有,某些设定档的内容到底是什么? 这个可就不需要担心了!因为在Linux上开发的软件大多数都是自由软件,而这些软件的开发者为了让大家能够了解指令的用法, 都会自行制作很多的文件,而这些文件也可以直接在线上就能够轻易的被使用者查询出来喔!很不赖吧! 这根本就是‘线上说明文件’嘛!哈哈!没错!确实如此。我们底下就来谈一谈,Linux到底有多少的线上文件资料呢?


小标题的图示man page

嗄?不知道怎么使用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)
    
Tips:
进入man指令的功能后,你可以按下‘空白键’往下翻页,可以按下‘ q ’按键来离开man的环境。 更多在man指令下的功能,本小节后面会谈到的!
鸟哥的图示

看(鸟哥没骂人!)马上就知道一大堆的用法了!如此一来,不就可以知道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这个玩意儿竟然是一个‘装置文件’呢!很容易了解了吧!

Tips:
上表中的1, 5, 8这三个号码特别重要,也请读者要将这三个数字所代表的意义背下来喔!
鸟哥的图示

再来,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等部分。 通常鸟哥在查询某个资料时是这样来查阅的:

  1. 先察看NAME的项目,约略看一下这个资料的意思;
  2. 再详看一下DESCRIPTION,这个部分会提到很多相关的资料与使用时机,从这个地方可以学到很多小细节呢;
  3. 而如果这个指令其实很熟悉了(例如上面的date),那么鸟哥主要就是查询关于OPTIONS的部分了! 可以知道每个选项的意义,这样就可以下达比较细部的指令内容呢!
  4. 最后,鸟哥会再看一下,跟这个资料有关的还有哪些东西可以使用的?举例来说,上面的SEE ALSO就告知我们还可以利用‘info coreutils date’来进一步查阅资料;
  5. 某些说明内容还会列举有关的文件(FILES 部分)来提供我们参考!这些都是很有帮助的!

大致上了解了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 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’输出的结果中,我们知道其实输出的资料是:

  • 左边部分:指令(或文件)以及该指令所代表的意义(就是那个数字);
  • 右边部分:这个指令的简易说明,例如上述的‘-macros to format man pages’

当使用‘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
    
Tips:
一般来说,鸟哥是真的不会去背指令的,只会去记住几个常见的指令而已。那么鸟哥是怎么找到所需要的指令呢? 举例来说,列印的相关指令,鸟哥其实仅记得 lp (line print)而已。那我就由 man lp 开始,去找相关的说明, 然后,再以 lp[tab][tab] 找到任何以 lp 为开头的指令,找到我认为可能有点相关的指令后, 再以 man 去查询指令的用法!呵呵!所以,如果是实际在管理 Linux , 那么真的只要记得几个很重要的指令即可,其他需要的,嘿嘿!努力的找男人(man)吧!
鸟哥的图示

小标题的图示info page

在所有的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.
    

仔细的看到上面这个显示的结果,里面的第一行显示了很多的资讯喔!第一行里面的资料意义为:

  • File:代表这个info page的资料是来自info.info文件所提供的;
  • Node:代表目前的这个页面是属于Top节点。 意思是info.info内含有很多资讯,而Top仅是info.info文件内的一个节点内容而已;
  • Next:下一个节点的名称为Getting Started,你也可以按‘N’到下个节点去;
  • Up:回到上一层的节点总揽画面,你也可以按下‘U’回到上一层;
  • Prev:前一个节点。但由于Top是info.info的第一个节点,所以上面没有前一个节点的资讯。

从第一行你可以知道这个节点的内容、来源与相关连结的资讯。更有用的资讯是,你可以透过直接按下N, P, U来去到下一个、上一个与上一层的节点(node)!非常的方便! 第一行之后就是针对这个节点的说明。在上表的范例中,第二行以后的说明就是针对info.info内的Top这个节点所做的。

再来,你也会看到有‘Menu’那个咚咚吧!底下共分为四小节,分别是Getting Started等等的,我们可以使用上下左右按键来将游标移动到该文字或者‘ * ’上面,按下Enter, 就可以前往该小节了!另外,也可以按下[Tab]按键,就可以快速的将游标在上表的画面中的node间移动, 真的是非常的方便好用。如果将info.info内的各个节点串在一起并绘制成图表的话,情况有点像底下这样:

info page各说明文件相关性的示意图
图3.2.1、info page各说明文件相关性的示意图

如同上图所示,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’就知道结果了! ^_^


小标题的图示其他有用的文件(documents)

刚刚前面说,一般而言,指令或者软件制作者,都会将自己的指令或者是软件的说明制作成‘线上说明文件’! 但是,毕竟不是每个咚咚都需要做成线上说明文件的,还有相当多的说明需要额外的文件!此时,这个所谓的 How-To(如何做的意思)就很重要啦!还有,某些软件不只告诉你‘如何做’, 还会有一些相关的原理会说明呢。

那么这些说明文件要摆在哪里呢?哈哈!就是摆在/usr/share/doc这个目录啦!所以说,你只要到这个目录底下, 就会发现好多好多的说明文件档啦!还不需要到网络上面找资料呢!厉害吧!^_^ 举例来说,你想要知道这一版的CentOS相关的各项资讯,可以直接到底下的目录去瞧瞧:

  • /usr/share/doc/centos-release-notes-5.3/

那如果想要知道本章讲过多次的bash是什么,则可以到/usr/share/doc/bash-3.2/ 这个目录中去浏览一番!很多东西呦!而且/usr/share/doc这个目录下的资料主要是以套件(packages)为主的, 例如GCC这个套件的相关资讯在/usr/share/doc/gcc-xxx(那个xxx表示版本的意思!)。 未来可得多多查阅这个目录喔! ^_^

总结上面的三个咚咚(man, info, /usr/share/doc/),请记住喔:

  • 在文字介面下,有任何你不知道的指令或文件格式这种玩意儿,但是你想要了解他,请赶快使用man或者是info来查询!
  • 而如果你想要搭建一些其他的服务,或想要利用一整组软件来达成某项功能时,请赶快到/usr/share/doc 底下查一查有没有该服务的说明档喔!
  • 另外,再次的强调,因为Linux毕竟是外国人发明的,所以中文文件确实是比较少的! 但是不要害怕,拿本英文字典在身边吧!随时查阅!不要害怕英文喔!

大标题的图示超简单文书编辑器: nano

在Linux系统当中有非常多的文书编辑器存在,其中最重要的就是后续章节我们会谈到的vi这家伙! 不过其实还有很多不错用的文书编辑器存在的!在这里我们就介绍一下简单的nano这一支文书编辑器来玩玩先!

nano的使用其实很简单,你可以直接加上档名就能够开启一个旧档或新档!底下我们就来开启一个名为test.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]按键啦!底下先来说说比较重要的几个组合按键:

  • [ctrl]-G:取得线上说明(help),很有用的!
  • [ctrl]-X:离开naon软件,若有修改过文件会提示是否需要储存喔!
  • [ctrl]-O:储存文件,若你有权限的话就能够储存文件了;
  • [ctrl]-R:从其他文件读入资料,可以将某个文件的内容贴在本文件中;
  • [ctrl]-W:搜寻字串,这个也是很有帮助的指令喔!
  • [ctrl]-C:说明目前游标所在处的行数与列数等资讯;
  • [ctrl]-_:可以直接输入行号,让游标快速移动到该行;
  • [alt]-Y:校正语法功能开启或关闭(按一下开、再按一下关)
  • [alt]-M:可以支援滑鼠来移动游标的功能

比较常见的功能是这些,如果你想要取得更完整的说明,可以在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 传送文件啦等等的,如果你直接按下电源开关来关机时, 则其他人的资料可能就此中断!那可就伤脑筋了!

此外,最大的问题是,若不正常关机,则可能造成文件系统的毁损 (因为来不及将资料回写到文件中,所以有些服务的文件会有问题!)。所以正常情况下,要关机时需要注意底下几件事:

  • 观察系统的使用状态
    如果要看目前有谁在线上,可以下达‘who’这个指令,而如果要看网络的连线状态,可以下达 ‘ netstat -a ’这个指令,而要看背景执行的程序可以执行‘ ps -aux ’这个指令。使用这些指令可以让你稍微了解主机目前的使用状态!当然啰,就可以让你判断是否可以关机了 (这些指令在后面Linux常用指令中会提及喔!)

  • 通知线上使用者关机的时刻
    要关机前总得给线上的使用者一些时间来结束他们的工作,所以,这个时候你可以使用 shutdown 的特别指令来达到此一功能。

  • 正确的关机指令使用
    例如 shutdown 与 reboot 两个指令!

所以底下我们就来谈一谈几个与关机/重新开机相关的指令啰!

  • 将资料同步写入硬碟中的指令: sync
  • 惯用的关机指令: shutdown
  • 重新开机,关机: reboot, halt, poweroff
Tips:
由于Linux系统的关机/重新开机是很重大的系统运作,因此只有root才能够进行例如shutdown, reboot等指令。 不过在某些distributions当中,例如我们这里谈到的CentOS系统,他允许你在本机前的tty7使用图形介面登入时, 可以用一般帐号来关机或重新开机!但某些distributions则在你要关机时,他会要你输入root的密码呢!^_^
鸟哥的图示

小标题的图示资料同步写入磁碟: sync

第零章、计算机概论里面我们谈到过资料在电脑中运作的模式, 所有的资料都得要被读入记忆体后才能够被CPU所处理,但是资料又常常需要由记忆体写回硬碟当中(例如储存的动作)。 由于硬碟的速度太慢(相对于记忆体来说),如果常常让资料在记忆体与硬碟中来回写入/读出,系统的效能就不会太好。

因此在Linux系统中,为了加快资料的读取速度,所以在预设的情况中, 某些已经载入记忆体中的资料将不会直接被写回硬碟,而是先暂存在记忆体当中,如此一来, 如果一个资料被你重复的改写,那么由于他尚未被写入硬碟中,因此可以直接由记忆体当中读取出来, 在速度上一定是快上相当多的!

不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机 (例如停电或者是不小心踢到power)时,由于资料尚未被写入硬碟当中,哇!所以就会造成资料的更新不正常啦! 那要怎么办呢?这个时候就需要sync这个指令来进行资料的写入动作啦! 直接在文字介面下输入sync,那么在记忆体中尚未被更新的资料,就会被写入硬碟中!所以,这个指令在系统关机或重新开机之前, 很重要喔!最好多执行几次!

虽然目前的 shutdown/reboot/halt 等等指令均已经在关机前进行了 sync 这个工具的呼叫, 不过,多做几次总是比较放心点~呵呵~

[root@www ~]# sync
    
Tips:
事实上sync也可以被一般帐号使用喔!只不过一般帐号使用者所更新的硬碟资料就仅有自己的资料, 不像root可以更新整个系统中的资料了。
鸟哥的图示

小标题的图示惯用的关机指令: shutdown

由于Linux的关机是那么重要的工作,因此除了你是在主机前面以tty7图形介面来登入系统时, 不论用什么身份都能够关机之外,若你是使用远端管理工具(如透过pietty使用ssh服务来从其他电脑登入主机), 那关机就只有root有权力而已喔!

嗯!那么就来关机试试看吧!我们较常使用的是shutdown这个指令,而这个指令会通知系统内的各个程序 (processes),并且将通知系统中的run-level内的一些服务来关闭。shutdown可以达成如下的工作:

  • 可以自由选择关机模式:是要关机、重新开机或进入单人操作模式均可;
  • 可以设定关机时间: 可以设定成现在立刻关机, 也可以设定某一个特定的时间才关机。
  • 可以自订关机讯息:在关机之前,可以将自己设定的讯息传送给线上 user 。
  • 可以仅发出警告讯息:有时有可能你要进行一些测试,而不想让其他的使用者干扰, 或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用 shutdown 来吓一吓使用者,但却不是真的要关机啦!
  • 可以选择是否要 fsck 检查文件系统 。

那么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

还有三个指令可以进行重新开机与关机的任务,那就是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去查询一下喔!


小标题的图示切换执行等级: init

本章上头有谈到过关于run level的问题。之前谈到的是系统运作的模式,分为纯文字(run level 3)及图形介面模式(run level 5)。除了这两种模式外,有没有其他模式呢?其实Linux共有七种执行等级, 七种等级的意义我们在后面会再谈到。本章你只要知道底下四种执行等级就好了:

  • run level 0:关机
  • run level 3:纯文字模式
  • run level 5:含有图形介面模式
  • run level 6:重新开机

那如何切换各模式呢?可以使用init这个指令来处理喔!也就是说,如果你想要关机的话, 除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的指令来关机:

[root@www ~]# init 0
    

大标题的图示开机过程的问题排解

事实上,Linux主机是很稳定的,除非是硬体问题与系统管理员不小心的动作,否则, 很难会造成一些无法挽回的错误的。但是,毕竟我们目前使用的可能是练习机,会常常开开关关的, 所以确实可能会有一些小问题发生。好了,我们先来简单的谈一谈,如果无法顺利开机时, 你应该如何解决。要注意的是,底下说到的内容很多都还没有开始介绍, 因此,看不懂也不要太紧张~在本书全部都读完且看第二遍时,你自然就会有感觉了! ^_^


小标题的图示文件系统错误的问题

在开机的过程中最容易遇到的问题就是硬碟可能有坏轨或文件系统发生错误(资料损毁)的情况, 这种情况虽然不容易发生在稳定的Linux系统下,不过由于不当的开关机行为, 还是可能会造成的,常见的发生原因可能有:

  • 最可能发生的原因是因为断电或不正常关机所导致的文件系统发生错误, 鸟哥的主机就曾经发生过多次因为跳电,家里的主机又没有安装不断电系统, 结果就导致硬碟内的文件系统错误!文件系统错误并非硬体错误,而是软件资料的问题喔!

  • 硬碟使用率过高或主机所在环境不良也是一个可能的原因, 例如你开放了一个FTP服务,里面有些资料很有用, 所以一堆人抢着下载,如果你又不是使用较稳定的SCSI介面硬碟,仅使用一般PC使用的硬碟, 虽然机率真的不高,但还是有可能造成硬碟坏轨的。此外,如果主机所在环境没有散热的设备, 或者是相对湿度比较高的环境,也很容易造成硬碟的损坏喔!

解决的方法其实很简单,不过因为出错磁区所挂载的目录不同,处理的流程困难度就有差异了。 举例来说,如果你的根目录‘/’并没有损毁,那就很容易解决,如果根目录已经损毁了,那就比较麻烦!


  • 如果根目录没有损毁:

假设你发生错误的partition是在/dev/sda7这一块,那么在开机的时候,荧幕应该会告诉你:press root password or ctrl+D : 这时候请输入root的密码登入系统,然后进行如下动作:

  • 在游标处输入root密码登入系统,进行单人单机的维护工作;
  • 输入‘ fsck /dev/sda7 ’(fsck 为文件系统检查的指令,/dev/sda7为错误的partition,请依你的情况下达参数), 这时荧幕会显示开始修理硬碟的讯息,如果有发现任何的错误时,荧幕会显示: clear [Y/N]? 的询问讯息,就直接输入 Y 吧!
  • 修理完成之后,以 reboot 重新开机啰!


  • 如果根目录损毁了

一般初学者喜欢将自己的硬碟只划分为一个大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吧! 不要不愿意换硬碟啊!啥时后硬碟会坏掉谁也说不准的!

那么硬碟该如何预防发生文件系统错误的问题呢?可以参考底下说明:

  • 妥善保养硬碟
    例如:主机通电之后不要搬动,避免移动或震动硬碟;尽量降低硬碟的温度,可以加装风扇来冷却硬碟; 或者可以换装 SCSI 硬碟。

  • 划分不同的partition
    为什么磁碟分割这么重要!因为Linux每个目录被读写的频率不同,妥善的分割将会让我们的Linux更安全! 通常我们会建议划分下列的磁碟区块:
    • /
    • /boot
    • /usr
    • /home
    • /var
    这样划分有些好处,例如/var是系统预设的一些资料暂存或者是cache资料的储存目录, 像 e-mail 就含在这里面。如果还有使用proxy时,因为常常存取,所以有可能会造成磁碟损坏, 而当这部份的磁碟损坏时,由于其他的地方是没问题的,因此资料得以保存,而且在处理时也比较容易!

小标题的图示忘记 root 密码:

常常有些朋友在设定好了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密码了!

    

这里仅是介绍一个简单的处理方法而已,更多的原理与说明将会在后续的各相关章节介绍的喔!


大标题的图示重点回顾
  • 为了避免瞬间断电造成的Linux系统危害,建议做为服务器的Linux主机应该加上不断电系统来持续提供稳定的电力;
  • 预设的图形模式登入中,可以选择语系以及作业阶段。作业阶段为多种视窗管理员软件所提供,如GNOME及KDE等;
  • CentOS 5.x预设的中文输入法为使用SCIM这个软件所提供的输入;
  • 不论是KDE还是GNOME预设都提供四个Virtual Desktop给使用者使用;
  • 在X的环境下想要重新启动X的组合按键为:‘[alt]+[ctrl]+[backspace]’;
  • 预设情况下,Linux提供tty1~tty6的文字介面登入,以及tty7的图形介面登入环境;
  • 除了run level 5预设取得图形介面之外,run level 3亦可使用 startx 进入图形环境;
  • 在终端机环境中,可依据提示字元为$或#判断为一般帐号或root帐号;
  • 取得终端机支援的语系资料可下达‘echo $LANG’或‘locale’指令;
  • date可显示日期、cal可显示日历、bc可以做为计算机软件;
  • 组合按键中,[tab]按键可做为命令补齐或档名补齐,[crtl]-[c]可以中断目前正在运作中的程序;
  • 线上说明系统有man及info两个常见的指令;
  • man page说明后面的数字中,1代表一般帐号可用指令,8代表系统管理员常用指令,5代表系统设定档格式;
  • info page可将一份说明文件拆成多个节点(node)显示,并具有类似超连结的功能,增加易读性;
  • 系统需正确的关机比较不容易损坏,可使用shutdown, poweroff等指令关机。

大标题的图示本章习题
( 要看答案请将滑鼠移动到‘答:’底下的空白处,按下左键圈选空白处即可察看)

情境模拟题一:我们在tty1里面看到的欢迎画面,就是在那个login:之前的画面(CentOS release 5.3 (Final)...)是怎么来的?
  • 目标:了解到终端机介面的欢迎讯息是怎么来的?
  • 前提:欢迎讯息的内容,是记录到/etc/issue当中的
  • 需求:利用man找到该文件当中的变数内容
情境模拟题一的解决步骤:
  1. 欢迎画面是在/etc/issue文件中,你可以使用‘nano /etc/issue’看看该文件的内容(注意,不要修改这个文件内容,看完就离开),这个文件的内容有点像底下这样:
    CentOS release 5.3 (Final)
    Kernel \r on an \m
        
  2. 与tty2比较之下,发现到核心版本使用的是 \r 而硬体等级则是 \m 来取代,这两者代表的意义为何? 由于这个文件的档名是issue,所以我们使用‘man issue’来查阅这个文件的格式;

  3. 透过上一步的查询我们会知道反斜线(\)后面接的字元是与mingetty(8)有关,故进行‘man mingetty’这个指令的查询。

  4. 由于反斜线(\)的英文为‘escape’因此在上个步骤的man环境中,你可以使用‘/escape’来搜寻各反斜线后面所接字元所代表的意义为何。

  5. 请自行找出:如果我想要在/etc/issue文件内表示‘时间(localtime)’与‘tty号码(如tty1, tty2的号码)’的话, 应该要找到那个字元来表示(透过反斜线的功能)?(答案为:\t 与 \l)

简答题部分:
  • 请问如果我以文字模式登入Linux主机时,我有几个终端机介面可以使用?如何切换各个不同的终端机介面?
    共有六个, tty1 ~ tty6 ,切换的方式为 Crtl + Alt + [F1]~[F6],其中, [F7] 为图形介面的使用。
  • 在Linux系统中,/VBird与/vbird是否为相同的文件?
    两者为不同的文件,因为 Linux 系统中,大小写字母代表意义不一样!
  • 我想要知道 date 如何使用,应该如何查询?
    最简单的方式就是使用 man date 或 info date 来查看,如果该套件有完整说明的话,那么应该也可以在 /usr/share/doc 里面找到说明档!
  • 我想要在今天的 1:30 让系统自己关机,要怎么做?
    shutdown -h 1:30
  • 如果我 Linux 的 X Window 突然发生问题而挂掉,但 Linux 本身还是好好的,那么我可以按下哪三个按键来让 X window 重新启动?
    [crtl]+[alt]+[backspace]
  • 我想要知道 2010 年 5 月 2 日是星期几?该怎么做?
    最简单的方式直接使用 cal 5 2010 即可找出 2010 年 5 月份的月历。
  • 使用 man date 然后找出显示目前的日期与时间的参数,成为类似:2009/10/16-20:03
    date +%Y/%m/%d-%H:%M
  • 若以 X-Window 为预设的登入方式,那请问如何进入 Virtual console 呢?
    可以按下 [Ctrl] + [Alt] + [F1] ~ [F6] 进入 Virtual console ( 共六个 ); 而按下 [Ctrl] + [Alt] + [F8] 或 [F7] 可回到 X-Window 的 desktop 中!
  • 简单说明在 bash shell 的环境下, [tab] 按键的用途?
    [Tab] 按键可做为命令补齐或文件补齐的功能,与所接的指令位置有关。 接在一串指令的第一个单字后面,则为命令补齐,否则则为文件补齐!
  • 如何强制中断一个程序的进行?(利用按键,非利用 kill 指令)
    可以利用 [Ctrl] + c 来中断!
  • Linux 提供相当多的线上查询,称为 man page,请问,我如何知道系统上有多少关于 passwd 的说明?又,可以使用其他的程序来取代 man 的这个功能吗?
    可以利用 man -f passwd 来查询,另外,如果有提供 info 的文件资料时 (在 /usr/share/info/ 目录中) ,则能够利用 info passwd 来查询之!
  • man -k passwd 与 man -K passwd 有什么差异(大小写的 K )?
    小写的 -k 为查询关键字,至于 -K 则是整个系统的 man page 查询~ 每个被检查到有关键字的 man page file 都会被询问是否要显示, 你可以输入‘ynq’,来表示:y:要显示到荧幕上;n:不显示;q:结束 man 的查询。
  • 在 man 的时候, man page 显示的内容中,指令(或文件)后面会接一组数字,这个数字若为 1, 5, 8 ,表示该查询的指令(或文件)意义为何?
    代表意义为 1) 一般使用者可以使用的指令或可执行文件 5)一些设定档的文件内容格式 8)系统管理员能够使用的管理指令。
  • man page 显示的内容的文件是放置在哪些目录中?
    放置在 /usr/share/man/ 与 /usr/local/man 等预设目录中。
  • 请问这一串指令‘ foo1 -foo2 foo3 foo4 ’中,各代表什么意义?
    foo1 一定是指令, -foo2 则是 foo1 这个指令的选择项目参数, foo3 与 foo4 则不一定, 可能是 foo1 的参数设定值,也可能是额外加入的 parameters。
  • 当我输入 man date 时,在我的终端机却出现一些乱码,请问可能的原因为何?如何修正?
    如果没有其他错误的发生,那么发生乱码可能是因为语系的问题所致。 可以利用 LANG=en 或者是 LANG=en_US 等设定来修订这个问题。
  • 我输入这个指令‘ls -al /vbird’,系统回覆我这个结果:‘ls: /vbird: No such file or directory’ 请问发生了什么事?’
    不要紧张,很简单的英文,因为系统根本没有 /vbird 这个文件的存在啊! ^_^
  • 你目前的 Linux 底下,预设共有多少可以被你执行的指令?
    最简单的做法,直接输入两次 [tab] 按键即可知道有多少指令可以被执行。
  • 我想知道目前系统有多少指令是以 bz 为开头的,可以怎么作?
    直接输入 bz[tab][tab] 就可以知道了!
  • 承上题,在出现的许多指令中,请问 bzip2 是干嘛用的?
    在使用 man bzip2 之后,可以发现到,其实 bzip2 是用来作为压缩与解压缩文件用的!
  • Linux 提供一些线上文献资料,这些资料通常放在那个目录当中
    通常放在 /usr/share/doc 当中!
  • 在终端机里面登入后,看到的提示字元 $ 与 # 有何不同?平时操作应该使用哪一个?
    # 代表以 root 的身份登入系统,而 $ 则代表一般身份使用者。依据提示字元的不同, 我们可以约略判断登入者身份。一般来说,建议日常操作使用一般身份使用者登入,亦即是 $ !
  • 我使用dmtsai这个帐号登入系统了,请问我能不能使用reboot来重新开机? 若不能,请说明原因,若可以,请说明指令如何下达?
    理论上reboot仅能让root执行。不过,如果dmtsai是在主机前面以图形介面登入时,则dmtsai还是可以透过图形介面功能来关机。

大标题的图示参考资料与延伸阅读
  • 注1:为了让Linux的视窗显示效果更佳,很多团体开始发展桌面应用的环境,GNOME/KDE都是。 他们的目标就是发展出类似Windows桌面的一整套可以工作的桌面环境,他可以进行视窗的定位、放大、缩小、 同时还提供很多的桌面应用软件。底下是KDE与GNOME的相关连结:
    http://www.kde.org/
    http://www.gnome.org/
  • 杨锦昌老师的X Window操作图解,以Fedora Core 3为例:http://apt.nc.hcc.edu.tw/docs/FC3_X/
  • man 7 man :取得更详细的数字说明内容

2002/07/16:第一次完成吧?
2003/02/06:重新编排与加入 FAQ
2004/05/01:在shutdown的指令部分,修改 shutdown -k "messages" 成为 shutdown -k now "messages",很抱歉,写错了!
2005/06/17:将原本的文章移动到 这里
2005/06/27:终于写完了!写的真久~没办法,将 man page 扩大解释,增加的幅度还挺多的!
2005/08/23:刚刚才发现,那个man page的内部指令说明中, n 与 N 的说明错误了!已订正!
2007/12/08:透过网友sheaushyong的发现,之前将Live CD中,说明要挂载 / 才 fsck 是不对的!请查阅此处
2008/09/03:将原本的Fedora Core IV的文章移动到此处
2008/09/08:加入了一些图示说明,尤其是info的部分多了一个示意图!
2008/09/09:加入了nano这个简单的文书编辑器说明,以及情境模拟题的解释!
2009/09/17:修订了显示的资讯,将图片重新抓图汇整。



 
     
中国存储网 ChinaStor.com排版整理
原文作者鸟哥,主页,更多Linux学习资料在线看:Linux系统管理员手册 - Linux命令大全 - Linux调用大全- Linux专栏 - 国产Linux