鸟哥的Linux私房菜2018简体化 第四章、首次登录与在线求助(2)

4.3 Linux系统的在线求助man page与info page

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

Tips

在这一版中,不输入任何字仅按下两次[tab]按钮来显示所有指令的功能被取消了!所以鸟哥以g为开头来说明一下啰!

[dmtsai@study ~]$ g[tab][tab]<==在g之后直接输入两次[tab]按键

Display all 217 possibilities? (y or n) <==如果不想要看,按n离开

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

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


4.3.1指令的—help求助说明

事实上,几乎Linux上面的指令,在开发的时候,开发者就将可以使用的指令语法与参数写入指令操作过程中了!你只要使用“--help”这个选项,就能够将该指令的用法作一个大致的理解喔!举例来说,我们来瞧瞧date这个指令的基本用法与选项参数的介绍:

[dmtsai@study ~]# date --help

Usage: date [OPTION]... [+FORMAT]                           #这里有基本语法

  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]  #这是设定时间的语法

Display the current time in the given FORMAT, or set the system date.

#下面是主要的选项说明

Mandatory arguments to long options are mandatory for short options too.

  -d, --date=STRING         display time described by STRING, not 'now'

  -f, --file=DATEFILE       like --date once for each line of DATEFILE

....(中间省略)....

  -u, --utc, --universal    print or set Coordinated Universal Time (UTC)

      --help     显示此帮助说明并离开

      --version  显示版本信息并离开

#下面则是重要的歌声(format)的主要项目

FORMAT controls the output.  Interpreted sequences are:


  %%   a literal %

  %a   locale's abbreviated weekday name (e.g., Sun)

  %A   locale's full weekday name (e.g., Sunday)

....(中间省略)....

#下面是几个重要的范例(Example)

Examples:

Convert seconds since the epoch (1970-01-01 UTC) to a date

  $ date --date='@2147483647'

....(下面省略)....

看一下上面的显示,首先一开始是下达语法的方式(Usage),这个date有两种基本语法,一种是直接下达并且取得日期返回值,且可以+FORAMAT的方式来显示。至于另一种方式,则是加上MMDDhhmmCCYY的方式来设置日期时间。它的格式是“月月日日时时分分西元年”的格式!再往下看,会说明主要的选项,例如-d的意义等等,后续又会出现+FORMAT的用法!从里面你可以查到我们之前曾经用过得“date +%Y%m%d”这个指令与选项的说明。

基本上,如果是指令,那么通过这个简单的--help就可以很快速的取得你所需要的选项、参数的说明了!这很重要!我们说过,在Linux下面你需要学习“完成任务”的方式,不用硬背指令参数。不过常用的指令你还是得要记忆一下,而选项就通过--help来快速查询即可。

同样的,通过cal --help你也可以取得相同的解释!相当好用!不过,如果你使用bc--help的话,虽然也有简单的解释,但是就没有类似scale的用法说明,

同时也不会有+, -, *, /, %等运算子的说明了!因此,虽然--help已经相当好用,不过,通常--help用在协助你查询“你曾经用过的指令所具备的选项与参数”而已,如果你要使用的是从来没有用过得指令,或者是你要查询的根本就不是指令,而是文件的“格式”时,那就得要通过man page啰!!


4.3.2 man page,mandb/makewhatis

咦!date --help没有告诉你STRING是什么?嘿嘿!不要担心,除了--help之外,我们Linux上面的其他在线帮助系统已经都帮你想好要怎么办了,所以你只要使用简单的方法去寻找一下说明的内容,马上就清清楚楚的知道该指令的用法了!怎么看呢?就是找男人(man)呀!喔!不是啦!这个man是manual(操作说明)的简写啦!只要下达:“man date”马上就会有清楚的说明出现在你面前喔!如下所示:

[dmtsai@study ~]$ LANG="en_US.utf8"

#还记得这个东西的用意吧?前面提过了,是为了“语系”的需要啊!执行过一次即可!


[dmtsai@study ~]$ 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.


       Mandatory arguments to long options are mandatory for short options too.


       -d, --date=STRING  <==左边-d为短格式名称,右边—date为完整选项名称

              display time described by STRING, not 'now'


       -f, --file=DATEFILE

              like --date once for each line of DATEFILE


       -I[TIMESPEC], --iso-8601[=TIMESPEC]

              output  date/time  in  ISO  8601  format.   TIMESPEC='date' for date only (the

              default), 'hours', 'minutes', 'seconds', or 'ns' for  date  and  time  to  the

              indicated precision.

....(中间省略)....

       #找到了!下面就是格式化输出的详细资料!

       FORMAT controls the output.  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.


EXAMPLES     <==一堆可用的范本

       Convert seconds since the epoch (1970-01-01 UTC) to a date


              $ date --date='@2147483647'

....(中间省略)....


DATE STRING  <==上面曾提到的—date的格式说明!

       The --date=STRING is a mostly free format human readable date string such as "Sun, 29

       Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next  Thursday".   A  date

       string  may  contain  items  indicating calendar date, time of day, time zone, day of


AUTHOR  <==这个指令的作者啦!

       Written by David MacKenzie.


COPYRIGHT  <==受到版权法的保护!用的就是GPL了!

       Copyright © 2013 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or

       later .

       This  is free software: you are free to change and redistribute it.  There is NO WAR‐

       RANTY, 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 coreutils 'date invocation'


       should give you access to the complete manual.


GNU coreutils 8.22                        June 2014                               DATE(1)

Tips

进入man指令的功能后,你可以按下“空格键”往下翻页,可以按下“q”按键来离开man的环境。更多在man指令下的功能,本小节后面会谈到的!

看!马上就知道一大堆的用法了!如此一来,不就可以知道date的相关选项与参数了吗?真方便!而出现的这个屏幕画面,我们称呼他为manpage,你可以在里头查询它的用法与相关的参数说明。如果仔细一点来看这个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 man”来更详细的取得说明。通过这张表格的说明,未来你如果使用manpage在察看某些数据时,就会知道该指令/文件所代表的基本意义是什么了。举例来说,如果你下达了“mannull”时,会出现的第一行 是:“NULL(4)”,对照一下上面的数字意义,嘿嘿!原来null这个玩意儿竟然是一个“设备文件”呢!很容易了解了吧!

Tips

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

再来,man page的内容也分成好几个部分来加以介绍该指令呢!就是上面mandate那个表格内,以NAME作为开始介绍,最后还有个SEEALSO来作为结束。基本上,man page大致分成下面这几个部分:

代号                        内容说明

NAME                        简短的指令、资料名称说明

SYNOPSIS                简短的指令执行语法(syntax)简介

DESCRIPTION          较为完整的说明,这部分最好仔细看看!

OPTIONS                  针对SYNOPSIS部分中,列举的所有可用的选项说明

COMMANDS             当这个程序(软件)在执行的时候,可以在此程序(软件)中执行的指令

FILES                        这个程序或资料所使用或参考或链接到的某些文件

SEE ALSO                可以参考的,跟这个指令或资料想过的其他说明!

EXAMPLE                 一些可以参考的范例

有时候除了这些外,还可能会看到Authors与Copyright等,不过也有很多时候仅有NAME与DESCRIPTION等部分。通常鸟哥在查询某个数据时是这样来查阅的:

1.先察看NAME的项目,约略看一下这个数据的意思;

2.再详看一下DESCRIPTION,这个部分会提到很多相关的信息与使用时机,从这个地方可以学到很多小细节呢;

3.而如果这个指令其实很熟悉了(例如上面的date),那么鸟哥主要就是查询关于OPTIONS的部分了!可以知道每个选项的意义,这样就可以下达比较细致的指令内容呢!

4.最后,鸟哥会再看一下,跟这个数据有关的还有哪些东西可以使用的?举例来说,上面的SEEALSO就告知我们还可以利用“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的画面当中才能使用的!比较有趣的是那个搜索啦!我们可以往下或者是往上搜索某个字串,例如要在manpage内搜索vbird这个字串,可以输入/vbird或者是?vbird,只不过一个是往下而一个是往上来搜寻的。而要重复搜寻某个字串时,可以使用n或者是N来动作即可呢!很方便吧!^_^

既然有man page,自然就是因为有一些文件数据,所以才能够以manpage读出来啰!那么这些man page的数据放在哪里呢?不同的distribution通常可能有点差异性,不过,通常是放在/usr/share/man这个目录里头,然而,我们可以通过修改它的manpage搜寻路径来改善这个目录的问题!修改/etc/man_db.conf(有的版本为man.conf或manpath.conf或man.config等)即可啰!至于更多的关于man的信息你可以使用“man man”来查询呦!关于更详细的设置,我们会在第十章bash当中继续的说明喔!

搜寻特定指令/文件的man page说明文档

在某些情况下,你可能知道要使用某些特定的指令或者是修改某些特定的配置文件,但是偏偏忘记了该指令的完整名称。有些时候则是你只记得该指令的部分关键字。这个时候你要如何查出来你所想要知道的man page呢?我们以下面的几个例子来说明man这个指令有用的地方喔!

例题:

你可否查出来,系统中还有哪些跟“man”这个指令有关的说明文档呢?

答:

你可以使用下面的指令来查询一下:

[dmtsai@study ~]$ man -f man

man (1)              - an interface to the on-line reference manuals

man (1p)             - display system documentation

man (7)              - macros to format man pages

使用-f这个选项就可以取得更多与man相关的信息,而上面这个结果当中也有提示了(数字)的内容, 举例来说,第三行的“man(7)”表示有个man(7)的说明文档存在喔!但是却有个man(1)存在啊!那当我们下达“man man”的时候,到底是找到哪一个说明文档呢?其实,你可以指定不同的文件的,举例来说,上表当中的两个man你可以这样将他的文件叫出来:

[dmtsai@study ~]$ man 1 man  <==这里是用man(1)的文件资料

[dmtsai@study ~]$ man 7 man  <==这里是用man(7)的文件资料

你可以自行将上面两个指令输入一次看看,就知道,两个指令输出的结果是不同的。那个1, 7就是分别取出在man page里面关于1与7相关数据的文件文件啰!好了,那么万一我真的忘记了下达数字,只有输入“manman”时,那么取出的数据到底是1还是7啊?这个就跟搜索的顺序有关了。搜索的顺序是记录在/etc/man_db.conf这个配置文件当中,先搜索到的那个说明文档,就会先被显示出来!一般来说,通常会先找到数字较小的那个啦!因为排序的关系啊!所以,man man会跟man 1 man结果相同!

除此之外,我们还可以利用“关键字”找到更多的说明文档数据喔!什么是关键字呢?从上面的“man-f man”输出的结果中,我们知道其实输出的数据是:

    左边部分:指令(或文件)以及该指令所代表的意义(就是那个数字);

    右边部分:这个指令的简单说明,例如上述的“-macros to format man pages”

当使用“man -f指令”时,man只会找数据中的左边那个指令(或文件)的完整名称,有一点不同都不行!但如果我想要找的是“关键字”呢?也就是说,我想要同时找上面说的两个地方的内容,只要该内容有关键字存在,不需要完全相同的指令(或文件)就能够找到时,该怎么办?请看下个范例啰!

例题:

找出系统的说明文档中,只要有man这个关键字就将该说明列出来。

答:

[dmtsai@study ~]$ man -k man

fallocate (2)        -manipulate file space

zshall (1)           - the Z shell meta-manpage

....(中间省略)....

yum-config-manager (1) - manage yum configuration options and yum repositories

yum-groups-manager (1) - create and edit yum's group metadata

yum-utils (1)        - tools formanipulating repositories and extended package management

看到了吧!很多对吧!因为这个是利用关键字将说明文档里面只要含有man那个字眼的(不见得是完整字串)就将它取出来!很方便吧!^_^(上面的结果有特殊字体的显示是为了方便读者查看,实际的输出结果并不会有特别的颜色显示喔!)

事实上,还有两个指令与man page有关呢!而这两个指令是man的简略写法说~就是这两个:

[dmtsai@study ~]$ whatis  [指令或者是資料]   <==相当于man -f [指令或者是资料]

[dmtsai@study ~]$ apropos [指令或者是資料]   <==相当于man -k [指令或者是资料]

而要注意的是,这两个特殊指令要能使用,必须要有创建whatis数据库才行!这个数据库的创建需要以root的身份下达如下的指令:

root@study ~]# mandb

#旧版的Linux这个指令是使用makewhatis喔!这一版开始使用mandb了!

Tips

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


4.3.3 info page

在所有的Unix Like系统当中,都可以利用man来查询指令或者是相关文件的用法;但是,在Linux里面则又额外提供了一种在线帮助的方法,那就是利用info这个好用的家伙啦!

基本上,info与man的用途其实差不多,都是用来查询指令的用法或者是文件的格式。但是与manpage一口气输出一堆信息不同的是,info page则是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写,并且在各个页面中还有类似网页的“超链接”来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。所以,你可以将info page想成是文字模式的网页显示数据啦!

不过你要查询的目标数据的说明文档必须要以info的格式来写成才能够使用info的特殊功能(例如超链接)。而这个支持 info指令的文件默认是放置在/usr/share/info/这个目录当中的。举例来说,info这个指令的说明文档有写成info格式,所以,你使用“info info”可以得到如下的画面:

[dmtsai@study ~]$ 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.

....(中间省略)....


   If you are new to the Info reader and want to learn how to use it,

type the command 'h'now.  It brings you to a programmed instruction

sequence. #这一段在说明,按下h可以有简单的指令说明!很好用!

....(中间省略)....


* Menu:


*Getting Started::             Getting started using an Info reader.

*Advanced::                    Advanced Info commands.

*Expert Info::                 Info commands for experts.

*Index::                       An index of topics, commands, and variables.


--zz-Info: (info.info.gz)Top, 52 lines --Bot------------------------------------------

仔细的看到上面这个显示的结果,里面的第一行显示了很多的信息喔!第一行里面的数据意义为:

    File:代表这个infopage的数据是来自info.info文件所提供的;

    Node:代表目前的这个页面是属于Top节点。意思是info.info内含有很多信息,而Top仅是info.info文件内的一个节点内容而已;

    Next:下一个节点的名称为GettingStarted,你也可以按“N”到下个节点去;

    Up:回到上一层的节点总览画面,你也可以按下“U”回到上一层;

    Prev:前一个节点。但由于Top是info.info的第一个节点,所以上面没有前一个节点的信息。

从第一行你可以知道这个节点的内容、来源与相关链接的信息。更有用的信息是,你可以通过直接按下N, P, U来去到下一个、上一个与上一层的节点(node)!非常的方便!第一行之后就是针对这个节点的说明。在上表的范例中,第二行以后的说明就是针对info.info内的Top这个节点所做的。另外,如论你在任何一个页面,只要不知道怎么使用info了,直接按下h系统就能够提供一些基本按键功能的介绍喔!

     copy of the license to the document, as described in section 6 of

     the license.


* Menu:


* Getting Started::             Getting started using an Info reader.

* Advanced::                    Advanced Info commands.

* Expert Info::                 Info commands for experts.

* Index::                       An index of topics, commands, and variables.



--zz-Info: (info.info.gz)Top, 52 lines --Bot-------------------------------------------

Basic Info command keys  #这里是按下h之后才会出现的一堆简单按键说明!


x           Close this help window.      #按下x就可以关闭这个help的窗口

q           Quit Info altogether.        #完全离开info page哦!

H           Invoke the Info tutorial.


Up          Move up one line.

Down        Move down one line.

DEL         Scroll backward one screenful.

SPC         Scroll forward one screenful.

-----Info: *Info Help*, 405 lines --Top-------------------------------------------------

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


图4.3.1、info page各说明文档相关性的示意图

如同上图所示,info的说明文档将内容分成多个node,并且每个node都有定位与链接。在各链接之间还可以具有类似“超链接”的快速按钮,可以通过[tab]键在各个超链接间移动。也可以使用U,P,N来在各个阶层与相关链接中显示!非常的不错用啦!至于在info page当中可以使用的按键,可以整理成下面这样,事实上,你也可以在infopage中按下h喔!

按键                    进行工作

空格键                    向下翻一页

[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 7将info page的文件放置到/usr/share/info/目录中!至于非以info page格式写成的说明文档(就是man page),虽然也能够使用info来显示,不过其结果就会跟man相同。举例来说,你可以下达“info man”就知道结果了!^_^


4.3.4其他有用的文件(documents)

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

那么这些说明文档要摆在哪里呢?哈哈!就是放在/usr/share/doc这个目录啦!所以说,你只要到这个目录下面,就会发现好多好多的说明文档啦!还不需要到网络上面找数据呢!厉害吧!^_^举例来说,你可能会先想要知道grub2这个新版的开机管理软件有什么能使用的指令?那可以到下面的目录瞧瞧:

/usr/share/doc/grub2-tools-2.02

另外,很多原版软件发布的时候,都会有一些安装须知、预计工作事项、未来工作规划等等的东西,还有包括可安装的程序等,这些文件也都放置在/usr/share/doc当中喔!而且/usr/share/doc这个目录下的数据主要是以套件(packages)为主的,例如nano这个软件的相关信息在/usr/share/doc/nano-xxx(那个xxx表示版本号的意思!)。

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

    在终端机模式中,如果你知道某个指令,但却忘记了相关选项与参数,请先善用--help的功能来查询相关信息;

    当有任何你不知道的指令或文件格式这种玩意儿,但是你想要了解它,请赶快使用man或者是info来查询!

    而如果你想要架设一些其他的服务,或想要利用一整组软件来达成某项功能时,请赶快到/usr/share/doc下面查一查有没有该服务的说明文档喔!

另外,再次的强调,因为Linux毕竟是外国人发明的,所以中文文件确实是比较少的!但是不要害怕,拿本英文字典在身边吧!随时查阅!不要害怕英文喔!



4.4超简单文本编辑器:nano

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

nano的使用其实很简单,你可以直接加上文件名就能够打开一个旧文件或新文件!下面我们就来打开一个名为text.txt的文件来看看:

[dmtsai@study ~]$ nano text.txt

#不管text.txt存不存在都没有关系!存在就打开旧文件,不存在就打开为新文件


  GNU nano 2.3.1                        File: text.txt                                


  <==这个是光标所在处





                                  [ New File ]

^GGet Help   ^OWriteOut   ^RRead File  ^YPrev Page  ^KCut Text   ^CCur Pos

^XExit       ^JJustify    ^WWhere Is   ^VNext Page  ^UUnCut Te   ^TTo Spell

#上面两行是指令说明,其中^代表的是[ctrl]的意思

如上图所示,你可以看到第一行反白的部分,那仅是在宣告nano的版本与文件名(File:text.txt)而已。之后你会看到最下面的三行,分别是文件的状态(NewFile)与两行指令说明列。指令说明列反白的部分就是组合键,接的则是该组合键的功能。那个指数符号(^)代表的是键盘的[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 2.3.1                        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.

  <==这个是光标所在处


^GGet Help   ^OWriteOut   ^RRead File  ^YPrev Page  ^KCut Text   ^CCur Pos

^XExit       ^JJustify    ^WWhere Is   ^VNext Page  ^UUnCut Te   ^TTo Spell

此时按下[crtl]-X会出现类似下面的画面:

  GNU nano 2.3.1                        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) ? ▋                       

 YYes

NNo           ^CCancel

如果不要储存数据只想要离开,可以按下N即可离开。如果确实是需要储存的,那么按下Y后,最后三行会出现如下画面:

File Name to Write: text.txt▋  <==可在这里修改文件名或直接按[enter]                    

^GGet Help          M-DDOS Format       M-AAppend           M-BBackup File

^CCancel            M-MMac Format       M-PPrepend

如果是单纯的想要储存而已,直接按下[enter]即可储存后离开nano程序。不过上表中最下面还有两行,我们知道指数符号代表[crtl],那个M是代表什么呢?其实就是[alt]啰!其实nano也不需要记太多指令啦!只要知道怎么进入nano、怎么离开,怎么搜寻字串即可。未来我们还会学习更有趣的vi呢!



4.5正确的关机方法:sync,shutdown,reboot,halt,poweroff,systemctl

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系统,它允许你在本机前的tty1~tty7当中(无论是文字界面或图形界面),可以用普通帐号来关机或重新开机!但某些distributions则在你要关机时,它会要你输入root的密码呢!^_^

数据同步写入磁盘:sync

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

因此在Linux系统中,为了加快数据的读取速度,所以在默认的情况中,某些已经载入内存中的数据将不会直接被写回硬盘,而是先暂存在内存当中,如此一来,

如果一个数据被你重复的改写,那么由于它尚未被写入硬盘中,因此可以直接由内存当中读取出来,在速度上一定是快上相当多的!

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

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

[dmtsai@study ~]$ su -   # 这个指令让你的身份变成root!下面请输入root的密码!

Password:  # 就这里!请输入安装时你所设定的root密码!

Last login: Mon Jun 

  1 16:10:12 CST 2015 on pts/0


[root@study ~]# sync

Tips

事实上sync也可以被普通帐号使用喔!只不过普通帐号使用者所更新的硬盘数据就仅有自己的数据,不像root可以更新整个系统中的数据了。

常用的关机指令:shutdown

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

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

可以自由选择关机模式:是要关机或重新启动均可;

可以设置关机时间:可以设置成现在立刻关机,也可以设置某一个特定的时间才关机;

可以自定义关机信息:在关机之前,可以将自己设置的信息传送给线上user;

可以仅发出警告讯息:有时有可能你要进行一些测试,而不想让其他的使用者干扰,或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用shutdown来吓一吓使用者,但却不是真的要关机啦!

那么shutdown的语法是如何呢?聪明的读者大概已经开始找“男人”了!没错,随时随地的man一下,是很不错的举动!好了,简单的语法规则为:

[root@study ~]# /sbin/shutdown [-krhc] [时间] [警告信息]

选项与参数:

-k     : 不要真的关机,只是发送警告信息出去!

-r     : 在将系统的服务停掉之后就重新开机(常用)

-h     : 将系统的服务停掉后,立即关机。(常用)

-c     : 取消已经在进行的shutdown指令内容。

时间   : 指定系统关机的时间!时间的实例下面会说明。若没有这个项目,则预设1分钟后自动进行。

实例:

[root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'

Broadcast message from [email protected] (Tue 2015-06-02 10:51:34 CST):


I will shutdown after 10 mins

The system is going down for power-off at Tue 2015-06-02 11:01:34 CST!

在执行shutdown之后,系统告诉大家,这部机器会在十分钟后关机!并且会将信息显示在目前登陆者的屏幕前方!你可以输入“shutdown-c”来取消这次的关机指令。而如果你什么参数都没有加,单纯执行shutdown之后,系统默认会在1分钟后进行“关机”的动作喔!我们也提供几个常见的时间参数给你参考!

Tips

与旧版不同的地方在于,以前shutdown后面一定得要加时间参数才行,如果没有加上的话,系统会跳到单人维护模式中。在这一版中,shutdown会以1分钟为限,进行自动关机的任务!真的很不一样喔!所以时间参数可以不用加啰!

[root@study ~]# shutdown -h now

立即关机,其中now相当于时间为0的状态

[root@study ~]# shutdown -h 20:25

系统在今天的20:25分会关机,若在21:25才下达此指令,则隔天才关机

[root@study ~]# shutdown -h +10

系统再过再过十分钟后自动关机

[root@study ~]# shutdown -r now

系统立刻重新启动

[root@study ~]# shutdown -r +30 'The system will reboot'

再过三十分钟系统会重新启动,并显示后面的信息给所有在线的使用者

[root@study ~]# shutdown -k now 'This system will reboot'

仅发出警告信息的参数!系统并不会关机啦!吓唬人!

重新启动,关机: reboot, halt, poweroff

还有三个指令可以进行重新启动与关机的任务,那就是reboot, halt, poweroff。其实这三个指令调用的函数库都差不多,所以当你使用“manreboot”时,会同时出现三个指令的用法给你看呢。其实鸟哥通常都只有记poweroff与reboot这两个指令啦!一般鸟哥在重新启动时,都会下达如下的指令喔:

[root@study ~]# sync; sync; sync; reboot

既然这些指令都能够关机或重新启动,那它有没有什么差异啊?基本上,在默认的情况下,这几个指令都会完成一样的工作!(全部的动作都是去调用systemctl这个重要的管理命令!)所以,你只要记得其中一个就好了!重点是,你自己习惯即可!

[root@study ~]# halt      #系统停止~屏幕可能会保留系统已经停止的信息!

[root@study ~]# poweroff  #系统关机,所以没有提供额外的电力,屏幕空白!

更多halt与poweroff的选项功能,请务必使用man去查询一下喔!

实际使用管理工具systemctl关机

如果你跟鸟哥一样是个老人家,那么一定会知道有个名为init的指令,这个指令可以切换不同的执行等级~执行等级共有0~6七个,其中0就是关机、6就是重新启动等等。不过,这个init目前只是一个兼容模式而已~所以在CentOS 7当中,虽然你依旧可以使用“init 0”来关机,但是那已经跟所谓的“执行等级”无关了!

那目前系统中所有服务的管理是使用哪个指令呢?那就是systemctl啦!这个指令相当的复杂!我们会在很后面系统管理员部份才讲的到!目前你只要学习systemctl当中与关机有关的部份即可。要注意,上面谈到的halt, poweroff, reboot, shutdown等等,其实都是调用这个systemctl指令的喔!这个指令跟关机有关的语法如下:

[root@study ~]# systemctl [指令]

指令项目包括如下:

halt       进入系统停止的模式,屏幕可能会保留一些信息,这与你的电源管理模式有关

poweroff   进入系统关机模式,直接关机没有提供电力喔!

reboot     直接重新关机

suspend    进入休眠模式


[root@study ~]# systemctl reboot    #系统重新开机

[root@study ~]# systemctl poweroff  #系统关机



4.6重点回顾

为了避免瞬间断电造成的Linux系统危害,建议做为服务器的Linux主机应该加上不断电系统来持续提供稳定的电力;

养成良好的操作习惯,尽量不要使用root直接登陆系统,应使用普通帐号登陆系统,有需要再转换身份;

可以通过“活动总览”查看系统所有使用的软件及快速启用惯用软件;

在X的环境下想要“强制”重新启动X的组合按键为:“[alt]+[ctrl]+[backspace]”;

默认情况下,Linux提供tty1~tty6的终端机界面;

在终端机环境中,可依据提示字符为$或#判断为一般帐号或root帐号;

取得终端机支持的语系数据可下达“echo $LANG”或“locale”指令;

date可显示日期、cal可显示日历、bc可以做为计算机软件;

组合按键中,[tab]按键可做为(1)命令补齐或(2)文件名补齐或(3)参数选项补齐,[crtl]-[c]可以中断目前正在运行中的程序;

Linux系统上的英文大小写为不同的数据;

线上说明系统有man及info两个常见的指令;

man page说明后面的数字中,1代表一般帐号可用指令,8代表系统管理员常用指令,5代表系统配置文件格式;

info page可将一份说明文档拆成多个节点(node)显示,并具有类似超链接的功能,增加易读性;

系统需正确的关机比较不容易损坏,可使用shutdown, poweroff等指令关机。

你可能感兴趣的:(鸟哥的Linux私房菜2018简体化 第四章、首次登录与在线求助(2))