命令的语法通用格式:COMMAND OPTINS ARGUMENTS
-
COMMAND OPTINS ARGUMENTS- 发起一个命令:请求内核将某个二进制程序运行为一个进程
- 程序 ----> 进程
- 静态 ----> 动态(有生命周期)
-
命令本身是一个可执行的程序文件(内部直接调用了CPU指令集当中一颗CPU所允许运行指令当中的某个或某些)
- 是二进制格式的文件, 有可能调用共享库文件;
- 多数程序文件都存放在:
/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 - 注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件
-
命令必须遵循特定格式规范:exe,msi, RLF(Linux)
- ~]# file /bin/ls
-
命令可分为两类:
- 由shell程序自带的命令:内置命令(builtin)
- 独立的可执行程序文件,文件名即命令名:外部命令
-
shell程序是独特的程序,负责解析用户提供的命令:
-
环境变量:
-
PATH:从哪些路径中查找用户键入的命令字符串所对应的命令文件
ubuntu@VM-0-6-ubuntu:~$ echo $PATH /home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin查找次序为:自左向右
-
查看命令类型
type COMMAND
内建的命令类型没有与之匹配的路径名
[rhino@rhino014 ~]$ type type type is a shell builtin type 是 shell 内建 [rhino@rhino014 ~]$ type ls ls is aliased to `ls --color=auto' ls 是 "ls --color=auto" 的别名 -
OPTIONS
-
指定命令的运行特性
-
选项有两种表现形式
-
短选项: -C,例如-l, -d
注意:有些命令的选项没有-符号;
如果同一个命令同时使用多个短选项,多数可合并:
-l -d = -ld -
长选项: --word, 例如 --help, --human-readable
注意:长选项不能合并
注意:有些选项可以带参数,此称为选项参数
-
ARGUMENTS
- 命令的作用对象:命令对什么生效
- 注意:不同的命令的参数;有些命令可同事带多个参数,多个之间以空白字符分割
获取命令的使用帮助
内部命令:
help COMMAND
ubuntu@VM-0-6-ubuntu:~$ help type
type: type [-afptP] 名称 [名称 ...]
显示关于命令类型的信息。
对于每一个 <名称>,指出如果作为命令名使用时,它将如何被解释。
选项:
-a 当且仅当没有同时使用 "-p" 选项时,显示所有包含名为 <名称>
的可执行文件的位置;包括别名、内建和函数
-f 阻止 shell 函数查找流程
-P 强制对每个 <名称> 搜索 PATH,即使它是别名、内建或函数,
并且返回将被执行的磁盘上的文件的名称
-p 返回将被执行的磁盘上的文件的名称,或者当 "type -t 名称"
不返回 "file" 时,不返回任何值
-t 返回下列单词中的一个:"alias"、"keyword"、"function"、
"builtin"、"file" 或者 "",分别表示 <名称> 是一个别名、
shell 保留字、shell 函数、shell 内建、磁盘文件或者未找到
参数:
名称 需要解释的命令。
退出状态:
如果所有的 <名称> 都被找到则返回成功;任何一个未找到则失败。
外部命令:
1.命令自带简要格式的使用帮助
~]# COMMAND --help
2.使用手册: manual
位置: /usr/share/man
~]# man COMMAND
SECTION:
- NAME: 功能性说明
- SYNOPSIS:语法格式
- DESCRIPTION:描述
- OPTIONS:选项
- EXAMPLES:使用示例
- AUTHOR:作者
- BUGS:报告程序bug的方式
- SEE ALSO:参考
- ...
SYNOPSIS:
- []: 可选内容
- <>: 必须提供的内容
- a|b|c: 多选一
- ...: 同类内容可出现多个
使用手册:压缩格式的文件,有章节之分;
-
ll /usr/share/man
数字代表内容
1:用户在shell环境可操作的命令或执行文件; 2:系统内核可调用的函数与工具等 3:一些常用的函数(function)与函数库(library),大部分为C的函数库(libc) 4:设备文件说明,通常在/dev下的文件 5:配置文件或某些文件格式 6:游戏(games) 7:惯例与协议等,如Linux文件系统,网络协议,ASCII code等说明 8:系统管理员可用的管理命令 9:跟kernel有关的文件 -
~]# man CHAPTER COMMAND
-
注意:并非每个COMMAND在所有章节下都有手册,如何知道哪个命令在哪个章节下有手册?
- 查看:
~]# whatis COMMAND
ubuntu@VM-0-6-ubuntu:~$ whatis passwd passwd (1) - 更改用户密码 passwd (5) - 密码文件 passwd (1ssl) - OpenSSL application commands注意:其中执行过程是查询数据库进行的
- 手动更新数据库:
~]# makewhatis
- 查看:
-
实例:
我们输入
man ls,它会在最左上角显示LS(1),在这里,LS表示手册名称,而(1)表示该手册位于第一节章,同样,我们输man ifconfig它会在最左上角显示IFCONFIG(8)。也可以这样输入命令:man [章节号] 手册名称。man 是按照手册的章节号的顺序进行搜索的,比如
> man sleep只会显示 sleep 命令的手册, 如果想查看库函数 sleep,就要输入:
man 3 sleep -
man命令打开手册以后的操作方法:
- 翻屏
- 空格键:向文件尾部翻屏;
- b: 向文件首部翻屏;
- Ctrl + d:向文件尾部翻半屏
- Ctrl + k:向文件首部翻半屏
- 回车键:向问价那位不翻一行;
- k:向文件首部翻一行
- G:跳转最后一行
- nG: n代指数字,跳转至指定行
- 1G:跳转至文件首部(第一行)
- 搜索
- /keyword: 从文件首部向文件尾部依次查找;不区分字符大小写
- ?keyword:从文件尾部向文件首部依次查找
- n:与查找命令方向相同
- N:与查找命令方向相反
- 退出
- q: quit
- 翻屏
-
选项
- -M /PATH/TO/SOMEDIR: 到指定目录下查找命令手册并打开之;
-
练习:获取useradd命令的用法
-
添加用户gentoo
useradd gentoo id gentoo -
添加用户slackware,要求指定其所用的shell为/bin/tcshell
useradd -s /bin/tcsh slackware tail -1 /etc/passwd
-
3.info COMMAND
获取命令的在线文档,一般作为man指令文档的补充性文档,不是每一个命令都有在线文档,一般使用频率较低
4.程序自带的帮助文档
很多应用程序会自带帮助文档: /usr/share/doc/APP-VERSION
-
README: 程序的相关信息;
-
INSTALL: 安装帮助
-
CHANGES: 版本迭代时的改动信息
5.Linux主流发行版的官方文档
6.程序的官方文档
官方站点上的Document
7.用好搜索引擎
keyword filetype:pdf
keyword site:domain.tld
...
书籍推荐
- 书籍的出版社
- O'Reiley
- Wrox
- 机械工业/电子工业/人邮/清华大学/水利水电