Linux下的which,whereis,locate,find命令的区别

我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: 
   which  查看可执行文件的位置。
   whereis 查看文件的位置。 
   locate   配合数据库查看文件位置。
   find   实际搜寻硬盘查询文件名称。

1.which 

  which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

1.1.命令格式:

which 可执行文件名称

1.2.命令功能:

which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

1.3.命令参数:

-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

-p  与-n参数相同,但此处的包括了文件的路径。

-w  指定输出时栏位的宽度。

-V  显示版本信息

1.4.使用实例:

实例1:查找文件、显示命令路径

[[email protected] ~]$ which pwd
/bin/pwd
[[email protected]-dev ~]$ which passwd
/usr/bin/passwd
[[email protected]-dev ~]$ which java
/home/bigdata/software/java/bin/java

which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!

实例2:用 which 去找出 which

[[email protected] ~]$ which which
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
    /usr/bin/which

说明:

竟然会有两个 which ,其中一个是 alias 这就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令!

实例3:找出 cd 这个命令

[[email protected] ~]$ which cd
/usr/bin/which: no cd in (/home/bigdata/software/java/bin:/usr/lib64/qt-3.3/bin:/home/bigdata/software/spark-1.5.2.2-bin-2.4.0.7/bin:/home/bigdata/software/R-3.2.1/bin:/home/bigdata/software/anaconda/bin:/home/bigdata/software/java/bin:/home/bigdata/software/hadoop/bin:/home/bigdata/software/hive/bin:/home/bigdata/software/sqoop/bin:/home/bigdata/software/hbase/bin:/home/bigdata/software/zeppelin/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/bigdata/software/hadoop/bin:/home/bigdata/software/hive/bin:/home/bigdata/software/sqoop/bin:/home/finance/bin)

说明:

cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是bash 内建的命令! 但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的!

2.whereis 

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

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

2.1.命令格式:

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

2.2.命令功能:

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。

2.3.命令参数:

-b   定位可执行文件。

-m   定位帮助文件。

-s   定位源代码文件。

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

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

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

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

2.4.使用实例:

实例1:将和**文件相关的文件都查找出来

[[email protected] ~]$ whereis java
java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java /usr/share/man/man1/java.1.gz
[[email protected]-dev ~]$ whereis svn
svn: /usr/bin/svn /usr/share/man/man1/svn.1.gz
[[email protected]-dev ~]$ whereis tomcat
tomcat:

tomcat没安装,找不出来,svn安装找出了很多相关文件

实例2:只将二进制文件 查找出来

[[email protected] ~]$ whereis -b svn
svn: /usr/bin/svn
[[email protected]-dev ~]$ whereis -m svn
svn: /usr/share/man/man1/svn.1.gz
[[email protected]-dev ~]$ whereis -s svn
svn:

whereis -m svn 查出说明文档路径,whereis -s svn 找source源文件。

时间: 2024-08-06 09:33:40

Linux下的which,whereis,locate,find命令的区别的相关文章

构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock

构建LINUX下的入侵检测系统——LIDS   系统管理命令--vlock http://blog.chinaunix.net/uid-306663-id-2440200.html LIDS的组成两个用户态工具和一些文件,和一个内核补丁/sbin/目录 存放LIDSADM命令和LIDSCONF命令 /etc/lids/lids.conf #ACLS配置文件/etc/lids/lids.cap #LIDS capabilities(功能)配置文件/etc/lids/lids.pw #LIDS密码文

Linux下的压缩zip,解压缩unzip命令详解及实例

Linux下的压缩zip,解压缩unzip命令 本人亲自测试总结: linux 安装unzip zip 安装命令:yum install -y unzip zip # unzip yasuo.zip 方法一: 安装命令:yum install -y unzip zip 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:# zip -r yasuo.zip abc.txt dir12.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip

Linux下的crontab定时执行任务命令详解

Linux下的crontab定时执行任务命令详解 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为"crontab",是"cron table"的简写. 一.cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业. service crond start    //启动服务 servi

linux下设置SMTP服务器并用mail命令发送邮件精解

在linux下设置SMTP服务器并用mail命令发邮件精解步骤: 1.vi /etc/mail.rc 在末尾追加如下内容: set [email protected]    //默认对外发送邮件的用户邮箱地址set smtp=smtp.domain.com    //选用默认发送邮件的公共邮件域名set [email protected]    //默认对外发邮件的用户set smtp-auth-password=password    //对应默认用户的密码set smtp-auth=logi

Linux下df与du两个命令的差别?

Linux下df与du两个命令的差别? 一.df显示文件系统的使用情况,与du比較,就是更全盘化. 最经常使用的就是 df -T,显示文件系统的使用情况并显示文件系统的类型. 举比例如以下: [[email protected] ~]# df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup-lv_root ext4 18134344 780860 16432296 5% / tmpf

Linux下弹入弹出光驱(CDROM)命令

Linux下弹入弹出光驱(CDROM)命令1. 弹出光驱命令eject2. 弹入光驱命令eject -t

Linux下的crontab定时执行任务命令详解 - 回家的流浪者 - 博客园

Linux下的crontab定时执行任务命令详解 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为“crontab”,是“cron table”的简写. 一.cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业. service crond start    //启动服务 service crond stop 

Linux下mysql使用systemctl restart mysqld命令失败

Linux下mysql使用systemctl restart mysqld命令失败: 解决方法:将mysql赋予root的权限 vim /etc/passwd 找到mysql开头的一行文件mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false !!!这里注意27这个数字和后面的文件路径每个人都不一样,只需要修改一个地方:把第一个27更改为0.修改为mysql:x:0:27:MySQL Server:/var/lib/mysql:/bin/fals

linux文件名查找which,whereis,locate

1. 文件名查找 使用find查询时,由于磁盘查询,所以速度较慢, 所以linux下查询更常使用which, whereis, locate来查询,由于是利用数据库查询,所以速度很快. 2. which 我们常用的ls命令,如果我们想知道这些常用命令放在哪儿, 就使用which命令来查询地址. which使用PATH 环境变量去查找文件名, which -a 返回所有的查到的命令, 默认返回第一条. $ which grep /bin/grep $ which ll alias ll='ls -