论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
Linux:查询范例的命令type
Linux:查询范例的命令type
饭宝
论坛元老
|
2024-6-25 01:07:40
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
1783
|
帖子
1783
|
积分
5349
相干阅读
Linux
https://blog.csdn.net/weixin_45791458/category_12234591.html?spm=1001.2014.3001.5482
type命令是Linux中一个查询范例的命令,它可以查询name是alias别名、keyword关键字、function函数名、builtin内建命令名(这很有用)或是file文件名(这个文件必要是可执行状态)。
下面是该命令的语法。
用法
type [-aftp] [name...]
选项
Without options 指示每个名称被解释为什么类型,显示第一个被搜索到的类型
-t 如果名称是别名(alias)、shell关键字(keyword)、函数名(function)、内建命令名(builtin)或磁盘文件名(file),则打印字符串为其中之一,显示第一个被搜索到的类型
-p 如果第一个搜索到类型是file,则显示其路径,这意味着如果使用-t name时搜索到的不是file,则不会显示
-P 强制在PATH进行搜索,即使使用-t name时显示的不是file
-a 以上所有选项描述中的“第一个”变为“全部”
复制代码
type命令可以根据name举行搜索,这个name可以是以绝对路径(/开头)、相对路径(./开头)大概一个纯名字(没有/或./开头)的形式给出,即下面三种形式都可以接受,如下例所示。
本文随后的所有实验是在ReadHat 7操作系统下举行的。
[***@EDA bin]$ type /usr/bin/ls ./ls ls #注意当前工作文件夹
/usr/bin/ls is /usr/bin/ls
./ls is ./ls
ls is aliased to `ls --color=auto' #这体现了搜索顺序中别名(alias)大于文件名(file)
复制代码
可以看到在上面的例子中,使用纯名字ls搜索的结果表现为一个别名(alias),这就体现了type命令的搜索序次。
1、搜索name是否为别名(如name使用绝对路径或相对路径则不可能搜索到,由于/不能存在于alias的名字中)。
2、搜索name是否为Shell关键字。
3、搜索name是否为函数名(它在内建命令前,由于一个函数优先于同名内建命令)。
4、搜索name是否为一个内建命令,如history之类的内建命令是无法被whereis都搜索到的(留意,某些内建命令可能会提供可执行的文件,比如echo、alias等)。
5、搜索name是否为一个文件(这个文件必要是可执行状态),如提供的是纯名字,则会在$PATH的路径内搜索;否则按照name给出的路径搜索。可以留意的是,type命令表现的第一个文件搜索结果,也就是使用纯名字(不使用绝对路径和相对路径)时Bash在$PATH中搜索到的第一个搜索结到并执行的命令。
下面使用-t选项,打印搜索结果的范例名。
[***@EDA bin]$ type -t /usr/bin/ls ./ls ls #注意当前工作文件夹
file
file
alias
复制代码
下面使用了-p选项,但由于纯名字ls搜索到的第一个结果是别名(alias),所以没有结果。
[***@EDA bin]$ type -p ls
(nothing output)
[***@EDA bin]$ type -p ./ls #注意当前工作文件夹
./ls
[***@EDA bin]$ type -p /usr/bin/ls
/usr/bin/ls
复制代码
下面的例子展示了使用-a选项和纯名字ls表现搜索到的所有结果,从表现的序次也可以看出,在搜索的序次中,别名(alias)优先于文件名(file)。
[zhangchen@EDA bin]$ type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
ls is /bin/ls
[zhangchen@EDA bin]$ type -at ls
alias
file
file
复制代码
实在,上面说到的type的搜索序次,也是一个命令剖析和执行序次:一条命令在剖析时首先会经历别名(alias)替换,随后检查是否为关键字,然后检查命令名是否是一个函数、再检查是否是一个内建命令,最后才到$PATH界说的路径去搜索(如果是使用纯名字)。
下面我们用系统内建命令cd做一个测试,首先创建一个叫cd的别名,然后创建一个叫cd的函数,最后使用-a选项和纯名字cd表现所有搜索结果(下例没有展示关键字的搜索环境)。
[***@EDA bin]$ type -a cd
cd is a shell builtin #第一个搜索到
cd is /usr/bin/cd #注意,即使内建命令,$PATH中也可搜索到cd
cd is /bin/cd
[***@EDA bin]$ [zhangchen@EDA ~]$ function cd() { #创建一个函数
> echo 111
> }
[***@EDA bin]$ cd #此时cd会优先被当做函数名而不是内建命令名
111
[***@EDA bin]$ type -a cd
cd is a function #第一个搜索到
cd ()
{
echo 111
}
cd is a shell builtin
cd is /usr/bin/cd
cd is /bin/cd
[***@EDA bin]$ alias cd='echo 222' #创建一个别名
[***@EDA bin]$ cd #此时cd会首先被当做别名(alias)展开,然后执行echo命令而不是直接作为函数名
222
[***@EDA bin]$ type -a cd
cd is aliased to `echo 222' #第一个搜索到
cd is a function
cd ()
{
echo 111
}
cd is a shell builtin
cd is /usr/bin/cd
cd is /bin/cd
[***@EDA bin]$ type -a alias
alias is a shell builtin #第一个搜索到
alias is /usr/bin/alias #注意,即使内建命令,$PATH中也可搜索到alias
alias is /bin/alias
[***@EDA bin]$ type -a history
history is a shell builtin #不是所有内建命令,$PATH中都可搜索到
复制代码
通过本文的学习,我们知道了type命令可以很方便表现当你使用一个名字时,Bash执行的究竟是别名替换、关键字、函数、内建命令还是某个可执行文件。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
饭宝
论坛元老
这个人很懒什么都没写!
楼主热帖
53基于java的资源博客论坛系统设计与实 ...
zotero+坚果云实现多pc端及iPad同步管 ...
Android——一个简单的记账本APP ...
天涯神贴合集500篇(2023最新) ...
需求:清空三个月前的操作日志,并生成 ...
面试官:@Configuration 和 @Component ...
Python潮流周刊#5:并发一百万个任务要 ...
nginx 常用指令配置总结
【分布式计算】学习笔记(期末复习) ...
企业级数据治理工作怎么开展?Datahub ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表