1 命令格式介绍
命令的语法通用格式:
# COMMAND OPTIONS ARGUMENTS
COMMAND
- 发起一个命令表示请求内核将某个二进制程序运行为一个进程;
- 程序启动为进程,静态程序变为动态的进程(有生命周期)。
- 命令本身是一个可执行的二进制格式的程序文件,有可能会调用共享库文件。
- 多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin下:
- 普通命令存放在:/bin, /usr/bin, /usr/local/bin下;
- 管理命令存放在:/sbin, /usr/sbin, /usr/local/sbin下;
- 共享库存放在:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64下;
- 32bits的库存放在:/lib, /usr/lib, /usr/local/lib下;
- 64bits的库存放在:/lib64, /usr/lib64, /usr/local/lib64下。
注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件,Linux内置命令没有与之对应的可执行程序文件。
- 命令必须遵循特定格式规范,如Windows中的exe, msi, Linux中的ELF;
- 查看文件内容格式的类型:
[root@localhost ~]# file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
- 命令分为两类:由shell程序的自带的命令叫做内置命令(builtin),独立的可执行程序文件,文件名即命令名,叫做外部命令。
- shell程序是独特的程序,负责解析用户提供的命令,其通过查找PATH环境变量来查找用户键入的命令字符串所对应的命令文件。查找次序:自左而右。
[root@localhost ~]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- 查看命令类型:type COMMAND
[root@localhost ~]# type ls ls is aliased to 'ls --color=auto' [root@localhost ~]# type type type is a shell builtin
- which ls:可查看 ls 命令对应的可执行程序(也可以使用 whereis ls);
- whereis ls:也可以获得 ls 有哪些帮助文件;
OPTIONS
- 指定命令的运行特性,指明要运行命令中的哪一部分功能代码。
- 选项有两种表现形式:
- 短选项:-C,例如-l,-d。注意:有些命令的选项没有-。如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld。
- 长选项:–word,例如–help,–human-readable。注意:长选项不能合并。
注意:有些选项可以带参数,此称为选项参数;短选项的参数用空格分隔,长选项的参数用=连接。
ARGUMENTS
- 命令的作用对象,命令对什么生效。
注意:不同的命令有不同的参数,有些命令可同时带多个参数,多个之间以空白字符分隔。
例如:ls -ld /var /etc
2 获取命令的使用帮助
help获取命令帮助(命令自带简要格式的使用帮助)
- 内部命令获取帮助:help COMMAND
help type
- 外部命令获取帮助:COMMAND --help
ls --help
使用手册:manual
- 位置:/usr/share/man
- 命令:# man COMMAND
man poweroff
- 试想一下man命令怎么知道去哪里找呢?其实man有自己的配置文件,会在配置文件里面定义man文档的路径,配置文件为:
- CentOS 6:/etc/man.config;
- CentOS 7:/etc/man_db.conf;
man -M /PATH/TO/SOMEWHERE COMMAND
:到指定位置下搜索手册并显示之。
- 手册的各个部分SECTION:
- NAME:简要功能性说明;
- SYNOPSIS:命令使用语法格式;
- DESCRIPTION:描述信息;
- OPTIONS:选项;
- EXAMPLES:使用示例;
- AUTHOR:命令的作者;
- BUGS:报告程序bug的方式;
- SEE ALSO:额外参考哪些命令;
- …
- SYNOPSIS:
- []:可选内容;
- <>:必须提供的内容;
- a|b|c:多选一;
- …:同类内容可出现多个;
- {}:用来做分组
- 手册为压缩格式的文件,有章节之分,分别存放在/usr/share/man下的man1,man2,…;各个章节说明:
- man1:用户命令手册;普通用户和管理员都可以运行的命令;
- man2:系统调用手册;eg. open, read, write;
- man3:C库调用手册;
- man4:设备文件及特殊文件手册;
- man5:文件格式手册(配置文件格式);
- man6:游戏使用帮助手册;
- man7:杂项手册;
- man8:管理工具及守护进程手册;管理工具:只有管理员可以运行的命令帮助;
- 查询某章节的某命令:man CHAPTER COMMAND
man 5 passwd
- 并非每个COMMAND在所有章节下都有手册,查看该命令在哪个章节下有手册:whatis COMMAND
注意:其执行过程是查询数据库进行的,数据库会定期更新。whatis passwd
- 手动更新数据库:makewhatis
- man命令打开手册以后的操作方法:
- 翻屏:
- 空格键:向文件尾翻一屏;
b
: 向文件首部翻一屏;Ctrl+d
:向文件尾部翻半屏;Ctrl+u
:向文件首部翻半屏;- 回车键:向文件尾部翻一行;
k
: 向文件首部翻一行;G
:跳转至最后一行;#G
: 跳转至指定行;1G
:跳转至文件首部;
- 文本搜索:
/keyword
:从文件首部向文件尾部依次查找;不区分字符大小写;?keyword
:从文件尾部向文件首部依次查找;不区分字符大小写;n
: 与查找命令方向相同;下一个;N
: 与查找命令方向相反;下一个;
- 退出:
q
: quit
- 选项:
- 到指定目录下查找命令手册并打开之:-M /PATH/TO/SOMEDIR
- 翻屏:
其他方式
- 获取命令的在线文档:info COMMAND
- 很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION;
- README:程序的相关的信息;
- INSTALL:安装帮助;
- ChangeLog:版本迭代时的改动信息;
- 主流发行版官方文档:http://www.redhat.com/doc
- 程序的官方文档:官方站点上的“Document”;
- 搜索引擎:google;
- keyword filetype:pdf
- keyword site:domain.tld //域名,不加www
- 参考书籍,经典书籍的出版社:
- 国外出版社:O’Reiley、Wrox;
- 国内出版社:机械工业出版社、电子工业出版社、人民邮电出版社、清华大学出版社、水利水电出版社。