概述:用户使用shell跟内核交互,Linux中有很多命令,不同的命令有不同的功能。多个命令合起来可以完成一个大的功能。命令很多我们不可能记得每条命令的用法。
所以,我们必须有一种方法来快速知道一个命令是如何使用的,有什么作用。所以,几乎所有的命令都提供了帮助手册,告诉命令的使用者如何使用命令、命令的作用等等。帮助手册页很长,我们不可能为了使用一个命令,而从头到尾把帮助手册读完,这时候需要一种快速读懂(有目的的去读)命令的帮助手册的方法。是如何实现的呢?管理整个计算硬件的其实是核心(kernel计算要系统),通常用户(user)都是以shell来与核心沟通,让核心达到我们所想要实现的目的。
shell就是一个应用程序,它读入用户键入的命令,把它转换成Linux系统更易于理解的格式。它也包括一些基本的程序结构,让用户做选项、循环,以及把值
存储在变量中。
一、了解命令的基本格式
shell执行程序:
shell负责执行终端请求的程序。
用户每次向shell命令提示符[root@Node1~]#键入一行信息,shell会在分析后决定做什么。shell所涉及到的每行信息都遵循相同的基本格式。如:
命令选项选项参数命令参数(1)命令参数(2)
命令,一般都会提供帮助文档,只有了解了命令格式的各项意义,我们才可能很快学会新命令的使用。至少在命令行提示符中键入命令时,不会写错。
第一字段:command(命令)可执行文件
第二字段:命令的选项,些命令的选项带参数,有些命令的选项不带参数
中括号[]是可选择项,在键入该命令的时候可以选择是否省略命令的选项。
竖线|表示左右两边任选一个作为,命令选项的参数。
省略号...表示该命令选项可以有多个,但是书写时,要按照下面的格式。
选项又分为:
1、长选项,使用--options格式。一般选项名称是完整的。如果一个命令的长选项有多个,是不可以合并的。
2、短选项,使用-options格式,一般是长选项名的简写格式。如果一个命令的短选项有多个,是可以合并的。
ls命令的选项-b和--escape作用是一样的。
[root@Node1~]#ls-b/root/
anaconda-ks.cfginstall.loginstall.log.syslog
[root@Node1~]#ls--escape/root/
anaconda-ks.cfginstall.loginstall.log.syslog
注意:长选项是不可以合并使用的,在命令行提示符中,键入的命令使用到多个长选项的时候要分开写
[root@Node1~]#ls--allblock-size=1/etc/
ls:unrecognizedoption'--allblock-size=1'
[root@Node1~]#ls--all--block-size=4/root/
..bash_history.bashrcinstall.log.syslog.tcshrc
...bash_logout.cshrc.lesshst.viminfo
anaconda-ks.cfg.bash_profileinstall.log.ssh
第三字段:命令参数
命令参数有多个需要使用空格隔开。
当用户按照上述描述的格式,在命令行提示符中键入命令以后,按[Enter]键后,shell就分析执行该命令。(Linux中[Enter]为<CR>字符表示)shell会先判断该命令的类型,如果是内部命令的话就直接执行,否则的话,shell会按照$PATH变量的值到磁盘搜索,用户键入的命令。
1、如果搜索到用户键入的命令,产生中断,由内核(kernel)负责把命令文件从磁盘中加载到内存
中来,并开始执行该命令。此时,命令就表示为一个进程。
2、如果shell按照$PATH变量的值到磁盘中找不到该命令的话,就会报错。
[root@Node1~]#tree/etc
-bash:tree:commandnotfound
说明:
命令的位置不在$PATH中和命令不存在,都会报commandnotfound
如果,我们键入的命令的位置不在shell搜索$PATH路径中,可以使用全路径描述该命令,或把该
命令所在的路径追加到$PATH变量中。
1、使用全路径描述文件
[root@Node1etc]#/usr/bin/tree/etc
2、把命令所在的路径加到$PATH变量中。
1[root@Node1~]#vim/etc/profile
在profile文件中添加一行$PATH=/path1/path2/:/path2/path3
如,在编译安装MySQL数据库,MySQL提供的工具所在的路径设置为,shell默认的搜索路径
($PATH)。这样使用MySQL提供的一些命令,对MySQL服务器操作维护时
就不需要输入命令的全路径了。这样比较方便。在profile文件中添加一行
$PATH=/usr/local/mysql/bin但是刚添加到$PATH中的路径,shell并不知道。
我们要通知shell,重读profile文件,方法是:
[root@Node1etc]#.profile
二、我们怎么,知道一个命令的使用方法呢?
一般,命令都会提供帮助文档,我们可以通过帮助文档来查看一个命令的使用方法。我们的命令又分为:shell内置命令和外部命令。
命令的类型不同,获取它的帮助文档的方式也不同。所以,我们首先要判断一个命令的类型?
判断command类型,使用【type】
[root@Node1etc]#typecd
cdisashellbuiltin
得知【cd】命令,是shell内置命令,我们可以使用下述方法查看该命令使用方法
[root@Node1etc]#helpcd
cd:cd[-L|-P][dir]
Changetheshellworkingdirectory.
ChangethecurrentdirectorytoDIR.ThedefaultDIRisthevalueofthe
HOMEshellvariable.
......
[root@Node1etc]#typels
lsisaliasedto`ls--color=auto'
ls命令,是外部命令。我们使用【command--help】或【man】命令来查看命令帮助文档。man中文意思"男人",在Linux世界中遨游,不懂就问男人。所以要学会man的使用。
我们非内核命令的帮助文档存放在,/usr/share中。
【man】命令是如何工作的?
man会按照它的配置文件/etc/man.config中MANPATH定义的路径去搜索命令的帮助文档,当我
们用【man】去查看command的帮助文档时,如果command的帮助文档不在man程序的搜索路径
中,man是找不到command的帮助文档的。所以,我们在编译安装源程序的时候,如果我们安装的
程序的帮助文档目录不在【man】的默认搜索路径下,则需要把程序的帮助文档的路径添加【man】
的索引路径中。可以通过编译/etc/man.config在MANPATH指令中添加上程序的帮助文档的路径
就可以了,如:把MySQL的帮助文档的路径添加到【man】的搜索路径中
[root@node2~]#vim/etc/man.config
#MANBIN/usr/local/bin/man
#
#EveryautomaticallygeneratedMANPATHincludesthesefields
#
MANPATH/usr/man
MANPATH/usr/share/man
MANPATH/usr/local/man
MANPATH/usr/local/share/man
MANPATH/usr/X11R6/man
MANPATH/usr/local/mysql/man/
我们的帮助文档是分章节的,不同章节表示不同的意思。了解帮助文档的不同章节的含义,我们才可以使用【man】命令快速定位到需要的内容。
查看的内容。
1、查看命令有哪些章节?使用【whatis】检索whatisdatabases数据库。而我们刚安装的程序的帮助文档不会记录到数据库里,Linux系统使用【makewhatis】来生成数据库的。系统把生成数据库的动作做成了系统的周期性任务,每周的星期天零晨4点22分执行一次生成whatis数据数据的任务。所以我们刚安装的程序,使用【whatiscommand】是查不到命令有多少章节的。如果需要查看的话,我们可以手动执行一下【makewhatis】命令,生成whatisdatabases.
[root@node2~]#whatisshutdown
shutdown(2)-shutdownpartofafull-duplexconnection
shutdown(3p)-shutdownsocketsendandreceiveoperations
shutdown(8)-bringthesystemdown
2、如章节表示的意义如下所述
man1用户命令
man2系统调用
man3库调用
man4设备文件
man5配置文件
man6游戏
man7杂项
man8管理命令
2、使用【manN】来实现用户随意查看帮助文档章节的内容
[root@node2~]#man8shutdown
3、使用【helpcommand】来查看command的使用方法,没有man显示那么详细.
[root@node2~]#shutdown--help
shutdown:invalidoption---
Usage:shutdown[-akrhHPfnc][-tsecs]time[warningmessage]
-a:use/etc/shutdown.allow
-k:don'treallyshutdown,onlywarn.
-r:rebootaftershutdown.
-h:h altaftershutdown.
-P:h altactionistoturnoffpower.
-H:h altactionistojusth alt.
-f:doa'fast'reboot(skipfsck).
-F:Forcefsckonreboot.
-n:donotgothrough"init"butgodownrealfast.
应用程序的帮助文档,通常是有不同的段落组成的。每个段落描述了应用程序的不同内容。了解帮助文档各段落表示的意义,我们可以快速找到我们想要读取到的内容。
手册的段落:
1、NAME命令名称
2、DESCRIPTION命令功能的详细描述
3、OPTIONS所有选项
4、FILES与当前命令相关的配置文件
5、EXAMPLES使用示例
6、SYNOPSIS使用格式
7、SEEALSO可参考的其它手册
说明:
如果,我们想快速知道command是怎么使用的,可以查看帮助手册的EXAMPLES段。命令的帮助手册有很多字符组成,那么我们如何定位到EXAMPLES字符呢?
当我们使用【man】打开查看命令的帮助手册页的时候,可以使用字符串搜索。
1、输入"/keywork"从文档的首部向尾部搜索,搜索到指定的字符会高亮显示。
2、输入"?keywork"从文档的尾部向首部搜索,搜索到指定的字符会高亮显示。
当我们搜索到字符在文档中多处出现有的时候,可以按一些键来快速显示下一个搜索到的字符。
1、N键:跟搜索命令相反,显示找到的下一个关键字
2、n键:跟搜索命令相同,显示找到的下一个关键字