命令的格式
COMMAND [OPTIONS…] [ARGUMENTS…]
- 选项:用于启用或关闭命令的某个或某些功能
- 短选项:-c 例如:-l, -h
- 长选项:–word 例如:–all, --human-readable
- 参数:命令的作用对象,比如文件名,用户名等
- 注意:
- 多个选项以及多参数和命令之间使用空白字符分隔
- 取消和结束命令执行:Ctrl+c,Ctrl+d
- 多个命令可以用;符号分开
- 一个命令可以用\分成多行
命令的类别
在shell中可执行的命令有两类 :内部命令,外部命令
内部命令
由shell自带的,而且通过某命令形式提供,当操作系统启动时就会自动加载道内存中。
命令 | 描述 |
---|---|
help | 能够查看内部命令列表,如果命令前有*,则表示该命令被禁用。 |
enable cmd | 启用内部命令 |
enable –n cmd | 禁用内部命令 |
enable –n | 所有禁用的内部命令 |
外部命令
在文件系统路径下有对应的可执行程序文件,通过$PATH环境变量的配置找到命令。
判断命令是内部命令还是外部命令
type cmd 查看命令是内部命令还是外部命令,带路径的是外部命令,不带路径的是内部命令(shell buitlin)。例子如下:
[root@centos7 data]#type help
help is a shell builtin
[root@centos7 data]#type echo
echo is a shell builtin
[root@centos7 data]#type who
who is /usr/bin/who
[root@centos7 data]#type date
date is /usr/bin/date
[root@centos7 data]#type ls
ls is aliased to `ls --color=auto'
说明help和echo是内部命令,who和date是内部命令,代码中的ls是别名。
内部命令是集成在shell中的,外部命令是存储在磁盘文件中的。内部命令会跟着系统启动而加载到内存中,外部命令随着调用会加载到内存中,通过hash表可以查看到。
有的命令除了有内部命令,还会有外部命令,例如echo(通过执行命令:type -a echo可以看到),但是系统在执行命令时内部命令要优先于外部命令(别名除外,别名优先级最高)
外部命令位置查找
which cmd 通过which能够查找到命令的位置
whereis cmd 通过whereis能够查到环境变量里包含该命令的所有目录
shell执行命令时,查找命令的顺序依次是:别名>内部命令>hash表中执行过的外部命令>$PATH中的外部命令