Shell - type & which

Linux/Unix中的commands(命令)究竟什么?

一个命令可以是以下四种之一:

1. 一个可执行的程序,就像我们在/usr/bin中看到的那些文件。在这个类别中,程序可以是编译的二进制文件,如用C和C++编写的程序,或用脚本语言编写的程序,如shell、Perl、Python、Ruby等等。

2. 一个内置于shell本身的命令。bash内部支持一些被称为shell内置的命令。例如,cd命令就是一个shell内置的命令。

3. 一个shell函数。shell函数是纳入环境变量中的微型shell脚本。

4. 一个别名(alias)。别名是我们可以自己定义的命令,由其他命令组成。

那如何识别这些命令?

使用type和which命令可以帮助我们。

type - 显示一个命令的类型

type命令是一个shell内建程序,它显示shell将执行的命令的类型或路径。

可以接多个命令名称参数,一起查找。

语法:

type [-afptP] cmd_name [cmd_name ...]

Arguments (参数):

cmd_name - 要解析的命令名称

Exit Status (退出状态值):

如果所有的命令名称都找了返回成功,如果有没找到的返回失败。

常用选项 Options:

Option

Long Option

Meaning

-a

-

显示这个命令可以被查找到的所有的路径。

-f

-

不对shell function进行查找。这个类似与内置的command -v命令。

-P

-

搜索给定命令名称的Path(路径),并输出。

-p

-

如果-t返回的是file的话,输出查找到的这个命令的文件路径名。

-t

-

只输出一个单词,表示命令的类型。为以下之一:alias、keyword、function、builtin、file。如果没找到则输出为空。

示例

$ type grep

grep is aliased to `grep --color=auto'

$ type -a grep

grep is aliased to `grep --color=auto'

grep is /usr/bin/grep

grep is /bin/grep

$ type -f grep

grep is aliased to `grep --color=auto'

$ type -P grep

/usr/bin/grep

$ type -t grep

alias

$ type type

type is a shell builtin

$ type -t type

builtin

===== ===== ===== ===== ===== ===== ===== 

which - 显示可执行文件的路径

有时,一个系统上安装的可执行程序有不止一个版本。

虽然这种情况在桌面系统上并不常见,但在大型服务器上却并不罕见。为了确定某个可执行程序的确切位置,可以使用which命令。

which命令只用查找于可执行程序,而不是内置程序(builtin),也不是实际可执行程序的别名(alias)。

所以当我们试图在一个shell内置程序上使用which时,例如cd,我们要么没有得到回应,要么得到一个错误信息。

$ which cd

/usr/bin/which: no cd in (/usr/local/bin:/usr/bin:/bin:/usr/local

/games:/usr/games)

语法:

which [-a] filename ...

Arguments (参数):

filename - 要查找路径的文件名

Exit Status (退出状态值):

0 - 所有的可执行文件都找到了

1 - 至少一个文件没找到,或者是不可执行的

2 - 使用参数错误

常用选项 Options:

Option

Long Option

Meaning

-a

-

显示这个命令可以被查找到的所有的路径。

示例

$ which which

/usr/bin/which

$ which grep

/usr/bin/grep

$ which -a which

/usr/bin/which

/bin/which

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值