先来了解一下Linux有多少命令呢?在文本模式下,你可以直接按下两个[Tab]按键,看看总共有多少命令可以让你用?
[knife@www ~]$ <==在这里不要输入任何字符,直接输入两次[tab]按键
Display all 2093 possibilities? (y or n) <==如果不想要看,按 n 离开
从上图,我们可以看出在这个linux系统中,有2093个命令可以让knife这个账号使用。这么多的命令要怎样才可以记住啊?不过,还是要以理解『在什么情况下,应该要使用哪方面的命令』为准的!既然说不需要背命令,那么我们如何知道每个命令的详细用法?还有,某些配置文件的内容到底是什么? 这个可就不需要担心了!因为在Linux上开发的软件大多数都是自由软件,而这些软件的开发者为了让大家能够了解命令的用法, 都会自行制作很多的文件,而这些文件也可以直接在在线就能够轻易的被使用者查询出来!
1)man page
啊?不知道怎么使用date这个命令?不要担心,Linux上面的在线求助系统已经都帮你想好要怎么办了,所以你只要使用简单的方法去寻找一下说明的内容,马上就清清楚楚的知道该命令的用法了!怎么看呢?就是找男人(man)呀!这个man是manual(操作说明、使用手册)的简写!只要下达:『man date』 马上就会有清楚的说明出现在你面前。如下所示:
[knife @www ~]$ LANG="en" # 还记得这个咚咚的用意吧?前面提过了,是为了『语系』的需要啊!下达过一次即可! [knife @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[email protected]>. 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)
出现的这个屏幕画面,我们称呼他为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大致分成下面这几个部分:
代号 |
内容说明 |
NAME |
简短的命令、数据名称说明 |
SYNOPSIS |
简短的命令下达语法(syntax)简介 |
DESCRIPTION |
较为完整的说明,这部分最好仔细看看! |
OPTIONS |
针对 SYNOPSIS 部分中,有列举的所有可用的选项说明 |
COMMANDS |
当这个程序(软件)在运行的时候,可以在此程序(软件)中下达的命令 |
FILES |
这个程序或数据所使用或参考或连结到的某些文件 |
SEE ALSO |
可以参考的,跟这个命令或数据有相关的其他说明! |
EXAMPLE |
一些可以参考的范例 |
BUGS |
是否有相关的bug! |
大致上了解了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,自然就是因为有一些文件数据,所以才能够以man page读出来!那么这些man page的数据放在哪里呢?不同的distribution通常可能有点差异性,不过,通常是放在/usr/share/man这个目录里。同时,我们还可以通过修改man page的搜寻路径来改变这个目录!修改/etc/man.config (有的版本为man.conf或manpath.conf)即可!至于更多的关于man的信息你可以使用『 man man 』来查询!
2)搜寻特定命令/文件的man page说明文件
在某些情况下,你可能知道要使用某些特定的命令或者是修改某些特定的配置文件,但是偏偏忘记了该命令的完整名称。有些时候则是你只记得该命令的部分关键词。这个时候你要如何查出来你所想要知道的man page呢? 此时可以使用『 man –f 命令 』或者『 man –k 命令』。
2.1 『 man –f 命令 』
『man -f man』输出的结果格式如下:
那我们如何知道系统中还有哪些与『man』这个命令有关的说明文件呢?可以使用底下的命令来查询一下:
[knife@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 你可以这样将他的文件叫出来:
[knife@www ~]$ man 1 man <==这里是用 man(1) 的文件数据
[knife@www ~]$ man 7 man <==这里是用 man(7) 的文件数据
你可以自行将上面两个命令输入一次看看,就知道了,这两个命令输出的结果是不同的。那么万一真的忘记了要下达的数字,只输入『 man man 』时,那么取出的数据到底是1还是7呢? 这个就跟搜寻的顺序有关了。搜寻的顺序是记录在/etc/man.conf这个配置文件当中,先搜寻到的那个说明档,就会先被显示出来!一般来说,通常会先找到数字较小的那个,因为排序的关系!所以,『 man man 』会跟『 man 1 man 』结果相同!
2.2 『 man –k 命令』
除此之外,我们还可以利用『关键词』找到更多的说明文件数据!什么是关键词呢? 当使用『man -f 命令』时,man只会找数据中的左边那个命令(或文件)的完整名称,有一点不同都不行! 但如果我想要找的是『关键词』呢?也就是说,我想要同时找上面说的两个地方的内容,只要该内容有关键词存在,不需要完全相同的命令(或文件)就能够找到时,这就是『 man –k 命令』的功能。请看以下范例:
[knife@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
3)info page
在所有的Unix Like系统当中,都可以利用 man 来查询命令或者是相关文件的用法; 但是,在Linux里面则又额外提供了一种在线求助的方法,那就是利用info这个好用的家伙!
基本上,info与man的用途其实差不多,都是用来查询命令的用法或者是文件的格式。但是与man page一口气输出一堆信息不同的是,info page则是将文件数据拆成一个一个的段落,每个段落用自己的页面来撰写, 并且在各个页面中还有类似网页的『超链接』来跳到各不同的页面中,每个独立的页面也被称为一个节点(node)。 所以,你可以将info page想成是文本模式的网页显示数据啦!支持info命令的文件默认是放置在/usr/share/info/这个目录当中的
使用『 info info 』可以得到如下的画面:
[knife@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 |
参考资料:http://vbird.dic.ksu.edu.tw/linux_basic/0160startlinux.php