whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。

但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

命令格式:

whereis [-bmsu] [BMS 目录名 -f ] 文件名

命令功能:

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。

whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

命令参数:

    -b   定位可执行文件。

    -m  定位帮助文件。

    -s   定位源代码文件。

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

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

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

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

whereis 使用举例:
1. 查找 date 命令的可执行文件、源代码和man手册的位置,输入:
    $ whereis date
    输出如下图:
       whereis-command-demo.gif
       Animated gif 01: whereis command running on my Debian based server
  1.1 如何只搜索二进制文件的位置?
       使用 -b 参数 :
         $ whereis -b date
  1.2 如何只搜索man手册的位置?
       使用 -m 参数:
         $ whereis -m date
  1.3 如何只搜索源代码文件的位置?
       使用 -s 参数:
         $ whereis -s date
2. 如何限制搜索的路径?
   使用下面的参数限制对应的搜索路径:
      -B /path/to/dir : 限制在指定的目录搜索二进制文件.
      -M /path/to/dir : 限制在指定的目录搜索man手册文件.
      -S /path/to/dir : 限制在指定的目录搜索二进制文件.
   在使用了-B , -M , -S  任意一个参数时,必须加上 -f  参数, 然后指定要搜索的文件名.
  2.1 只在 /bin 目录下搜索 ls 和gcc。
       $ whereis -B /bin -f ls gcc
     结果如下:

gcc: /usr/share/man/man1/gcc.1.gz
         ls: /usr/share/man/man1/ls.1.gz /bin/ls
 
  2.2 查找所有/usr/bin目录下的,其man文档不在 /usr/man/man1/ ,且其源代码文件不在/usr/src/ 的 文件。
       # cd /usr/bin
       # whereis -u -M /usr/man/man1 -S /usr/src -f *
      
关于whereis 的 -u参数的功能,因为不知道whereis的版本,不好查找对应版本的whereis的源代码,
whereis在git上的代码地址:https://github.com/karelzak/util-linux/blob/master/misc-utils/whereis.c#L96 
反正 -u 参数实际很少使用的,有兴趣的可以看下这代码。

参考地址:http://www.poluoluo.com/server/201502/338955.html

Chocoo

2016.3.9

------------------------------------------------------------------------------------------------------------------------------------------------

Linux新人,欢迎各种指点。

感谢锋哥指点迷津!

linux系统中whereis的用法详解的更多相关文章

  1. Jmeter(五十三) - 从入门到精通高级篇 - 懒人教你在Linux系统中安装Jmeter(详解教程)

    1.简介 我们绝大多数使用的都是Windows操作系统,因此在Windows系统上安装JMeter已经成了家常便饭,而且安装也相对简单,但是服务器为了安全.灵活小巧,特别是前几年的勒索病毒,现在绝大多 ...

  2. linux系统中的文件权限详解(转)

    一.在<Linux系统中如何查看文件属性>中介绍了通过ls指令来查看文件的属性,具体如下: [命令] letuknowit@ubuntu:/$ cd /tmp letuknowit@ubu ...

  3. Linux(Centos)中tcpdump参数用法详解(转)

    在linux下进行编程开发的人尤其是网络编程的人会经常需要分析数据包,那么一定会用到tcpdump,下面就是关于tcpdump的使用方法说明(1). tcpdump的选项 -a       将网络地址 ...

  4. (转)linux 中特殊符号用法详解

    linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员  $普通用户 脚本中 #!/b ...

  5. linux mount命令参数及用法详解

    linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...

  6. 【转】linux expr命令参数及用法详解

    在抓包过程中,查看某个设定时间内,数据上下行多少,用命令expr 计算! --------------------------------------------------------------- ...

  7. linux dmesg命令参数及用法详解(linux显示开机信息命令)

    linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...

  8. linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

    linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至:            linux dd命令使用详解 dd 的主要 ...

  9. (转)linux expr命令参数及用法详解

    linux expr命令参数及用法详解 原文:http://blog.csdn.net/tianmohust/article/details/7628694 expr用法 expr命令一般用于整数值, ...

随机推荐

  1. Linux IIO子系统分析

    最近稍微看了下LKML,发现里面有一个子系统叫做“IIO”.以前没有接触过,所以Google了下.     IIO子系统全称是 Industrial I/O subsystem(工业 I/O 子系统) ...

  2. 51单片机连接24C02-C语言测试代码

    忙了一天多终于透彻了,自己写的不好使,用别人的逐步分析改成自己的,我写得非常简洁易懂. 我总结3点需要注意的地方 1.关闭非IIC通信器件,比如我的开发板SDA和SCL也连接了DS1302,造成干扰会 ...

  3. cpp

  4. python面向对象(二)——类成员

    Python面向对象    类成员 1.字段         普通字段    属于对象         静态字段    属于类   2.方法 普通方法   触发者是对象    括号里至少一个参数 se ...

  5. cat、cp命令

    cat是查看文件内容, cp –cp是连目录及件文件都拷贝 cp是拷贝文件 a.txt里的内容是, abc def ghi cat a.txt |grep –v ghi 得到结果, abc def h ...

  6. Android基础知识回顾

  7. div+css的兼容性问题和解决方法

    1. 默认的内外边距不同 问题: 各个浏览器默认的内外边距不同 解决: *{margin:0;padding:0;}   2. 水平居中的问题 问题: 设置 text-align: center    ...

  8. 《Linux内核设计与实现》学习笔记之“Linux进程管理机制”

    一.进程(或者称为“任务”)简介 进程是OS最基本的抽象之一,通常进程包括“可执行程序代码”,“其他资源”(如:打开的文件,挂起的信号,内核内部数据,处理器状态,地址空间,一个或多个执行线程等) 二. ...

  9. 日志分析(php+nosql+rsync+crontable)

    是不是经常要分析用户的行为?是不是经常遇到多台server上传的日志一起分析?是不是对数据统计的间隔时间要求非常短?还有木有由于日志文件过大,而须要分块处理? 1.说明一点在日志写入的时候必须依照一种 ...

  10. Velocity源码分析

    velocity模板渲染的步骤: 1) 首先初始化启动Velocity引擎,可以通过Velocity.init()或者新建VelocityEngine类,并调用其中的init()方法: 2) 创建一个 ...