type命令用来显示指定命令的类型。一个命令的类型可以是如下之一
类型 | 解释 |
---|---|
alias | 别名 |
keyword | 关键字,Shell保留字 |
function | 函数,Shell函数 |
builtin | 内建命令,Shell内建命令 |
file | 文件,磁盘文件,外部命令 |
unfound | 没有找到 |
它是Linux系统的一种自省机制,知道了是那种类型,我们就可以针对性的获取帮助。比如内建命令可以用help命令来获取帮助,外部命令用man或者info来获取帮助。
命令格式
type [-aftpP] name [name ...
选项
如果没有设置选项的话将每个名称解释为命令名。
如果使用-t
选项,则type分别打印一个字符串,如果name是别名,shell保留字,函数,内建函数或磁盘文件 该字符串是 alias,keyword,function,builtin或file。
如果找不到名称,则不会打印任何内容,并返回为false的退出状态。
如果使用了-p
选项,则输入如果名称被指定为命令名称,则返回将被执行的磁盘文件的名称;如果“type -t name”
返回的不是文件的话,不返回任何内容。当且仅当不使用-p
选项时,返回中包括alias和function。
-P
选项强制PATH搜索每个名称,即使“type -t name”
返回的不是文件。
如果一个命令在hash中,-p
和-P
打印hash值,不一定是PATH中第一个出现的文件。
如果使用-a
选项,则type打印所有包含可执行文件名称的位置。使用-a
时,不会查阅命令hash表。
-f
选项抑制查找shell函数,与内置的命令一样。
如果所有参数匹配成功,则返回true,如果有任何参数没有找到,则返回false。
使用实例
[root@localhost ~]# type ls
ls is aliased to `ls --color=tty`
[root@localhost ~]# type cd
cd is a shell builtin
[root@localhost ~]# type date
date is /bin/date
[root@localhost ~]# type mysql
mysql is /usr/bin/mysql
[root@localhost ~]# type nginx
-bash: type: nginx: not found
[root@localhost ~]# type if
if is a shell keyword
[root@localhost ~]# type which
which is aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde`
[root@localhost ~]# type -a cd
cd is a shell builtin
[root@localhost ~]# type -a grep
grep is /bin/grep
参考链接:
http://codingstandards.iteye.com/blog/831504
http://www.cnblogs.com/frydsh/archive/2012/11/07/2758774.html