Linux里的这个type命令是个极其冷僻的命令,极少被使用,已被废弃。
一般情况下,type命令被用于判断另外一个命令是否是内置命令,但是它实际上有更多的用法。
1.判断一个名字当前是否是alias、keyword、function、builtin、file或者什么都不是:
type ls 的输出是 ls 是 `ls --color=auto' 的别名
type if 的输出是 if 是 shell 关键字
type type 的输出是 type 是 shell 内嵌
type frydsh 的输出是 bash: type: frydsh: 未找到
2.判断一个名字当前是否是alias、keyword、function、builtin、file或者什么都不是的另一种方法(适用于脚本编程):
type -t ls 的输出是 alias
type -t if 的输出是 keyword
type -t type 的输出是 builtin
type -t gedit 的输出是 file
type -t frydsh 没有输出
3.显示一个名字的所有可能:
type -a kill 的输出是 kill 是 shell 内嵌 和 kill 是 /bin/kill
type -at kill 的输出是 builtin 和 file
4.查看一个命令的执行路径(如果它是外部命令的话):
type -p gedit 的输出是 /usr/bin/gedit
type -p kill 没有输出(因为kill是内置命令)
5.强制搜索外部命令:
type -P kill 的输出是 /bin/kill
题主你好,
给题主举个例子吧,从例子中看起来更直观.
我在当前目录中新建了一个文件夹叫A,一个文件叫abcd, 又在A这个文件夹下新建了另一个abcd的文件夹,下面是目录结构:
此时我在当前目录下执行: find ./ -name abcd,会将 abcd文件以及A目录下的abcd文件夹都打印出来:
但是,如果我加上了-type参数后,就能更精确的限制查找的内容了,也就是说之前只要名称对上就输出,现在不仅名称要对上, 文件类型也要对上,才会输出:
从上图可以看出,只有当前目录下的abcd这个文件被输出了,而A目录下的abcd文件夹则没有,因为我规定了,我通过-type f声明了,查找的是名为abcd的名件,而非名为abcd的文件夹.
反之:
可以看出,只有A目录下的abcd这个文件夹被输出了,而abcd文件没有被输出,因为我通过-type d明确的告诉了find: "看清楚了啊, 你找到的东西不仅名称是abcd,类型还必须是文件夹才给我输出"
-----
find命令的-type选项支持的参数:
-----
希望可以帮到题主,欢迎追问.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)