Linux操作命令(四)

转自http://www.shiyanlou.com/courses/running/341


which命令

which命令的作用是,在PATH变量指定的路径中搜索可执行文件的所在位置。它一般用来确认系统中是否安装了指定的软件。

命令格式:

which 可执行文件名称

常用范例:

例一:确认是否安装了gcc,可以使用如下命令:

which gcc

Alt text

例二:查看cd命令的位置路径,可以使用如下命令:

which cd

Alt text

从上面的显示信息可以看到在实验楼的系统中cd是一个shell函数。

再来在我本地linux系统上执行which cd命令,显示的结果如下:

Alt text

显示在PATH变量指定的路径下没有cd命令。为什么显示没有呢?这是因为cd是shell内建命令,而which 默认是找 PATH 内所指定的目录,内建命令不在其指定的目录中,所以当然一定找不到。

那么就有个问题,为什么实验楼环境中cd是一个shell函数,而其他linux环境中cd是内建命令呢?这跟所使用的bash有关。

Alt text

Alt text

echo $SHELL命令查看当前使用的shell。

补充知识

到底什么是命令?

命令可以是下面四种形式之一:

  1. 是一个可执行程序,就像我们所看到的位于目录/usr/bin 中的文件一样。 属于这一类的程序,可以编译成二进制文件,诸如用 C 和 C++语言写成的程序, 也可以是由脚本语言写成的程序,比如说 shell,perl,python,ruby,等等。

  2. 是一个内建于 shell 自身的命令。bash 支持若干命令,内部叫做 shell 内部命令 (builtins)。例如,上面我本地环境中的cd命令,就是一个 shell 内部命令。

  3. 是一个 shell 函数。这些是小规模的 shell 脚本,它们混合到环境变量中。 比如上面讲到的cd命令,在实验楼环境中就是一个shell函数。

  4. 是一个命令别名。我们可以定义自己的命令,建立在其它命令之上。

whereis命令

whereis命令主要用于定位可执行文件、源代码文件、帮助文件在文件系统中的位置。whereis 命令还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

whereis命令查找速度非常快,这是因为它根本不是在磁盘中漫无目的乱找,而是在一个数据库中(/var/lib/mlocate/)查询。这个数据库是Linux系统自动创建的,包含有本地所有文件的信息,并且每天通过自动执行updatedb命令更新一次。也正是因为这个数据库要每天才更新一次,就会使得whereis命令的搜索结果有时候会不准确,比如刚添加的文件可能搜不到。

命令格式:

whereis [选项] 文件

常用参数:

  • -b 定位可执行文件

  • -m 定位帮助文件

  • -s 定位源代码文件

  • -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件

  • -B 指定搜索可执行文件的路径

  • -M 指定搜索帮助文件的路径

  • -S 指定搜索源代码文件的路径

常用范例:

例一:搜索gcc可执行文件的路径,可以使用如下命令:

whereis -b gcc

例二:搜索gcc帮助文件的路径,可以使用如下命令:

whereis -m gcc

例三:搜索gcc源代码的路径,可以使用如下命令:

whereis -s gcc

Alt text

locate命令

locate 命令跟whereis命令类似,且它们使用的是相同的数据库。但whereis命令只能搜索可执行文件、联机帮助文件盒源代码文件,如果要获得更全面的搜索结果,可以使用locate命令。

locate命令使用了十分复杂的匹配语法,可以使用特殊字元(如’*’和’?’)来指定需要查找的样本。

命令格式:

locate [选项] [搜索字符串]

常用参数:

  • -q 安静模式,不会显示任何错误讯息
  • -n 至多显示n个输出
  • -r 使用正规表达式做寻找的条件
  • -V 显示版本讯息

常用范例:

例一:搜索etc目录下所有以sh开头的文件,可以使用如下命令:

locate /etc/sh

Alt text

注意在实验楼环境中一开始执行这个命令会报错:locate 无法执行 stat() ‘/var/lib/mlocate/mlocate.db’:没有那个文件或目录。解决办法是执行sudo updatedb命令。

例二:搜索etc目录下文件名包含lou的文件,可以使用如下命令:

locate /etc/*lou*

Alt text

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值