Linux中常用命令——查找命令对比分析

  Linux中的查找命令比较多,主要分为两大类:一类是针对文件的查询,一类是针对Linux中相关命令的查询,本文的主要目的就是分析这两类常见命令各自的使用场景。

(一)针对命令的查询

bash shell的内置命令:type

  首先我们介绍一下type命令的功能,type主要是用来分辨一个命令是不是built-in命令,特别要注意这个命令是针对可执行文件的,举个例子来说

type cd 
#输出 cd is a shell builtin
————————————————————————————————————————————
type -a ls
#输出
ls is aliased to `ls --color==tty'
ls is /bin/ls

  在这里,主要想谈一下第二个输出,这里显示ls为什么会有两个输出呢?这其实,主要和Linux命令的执行顺序有关,也就是说虽然ls有两个可选择项目,但是ls执行的时候会从前到后依次执行,具体的命令执行顺序如下:

  1. 通过相对路径或者绝对路径来执行,例如下图中的/bin/ls
  2. alias找到命令执行,如下图ls本身就被声明为别名的形式
  3. 通过bash的内置命令执行
  4. 通过$PATH这个变量的顺序找到第一个命令来执行。

Linux中常用命令——查找命令对比分析_第1张图片
  从这张图中,我们可以看出,ls是有两个备选项的,但是当执行ls的时候,首先匹配到情况2,所以输出的有颜色的类型;当通过绝对路径/bin/ls执行的时候,输出的没有颜色的类型,与上面描述的顺序一致。

②which:脚本文件的查找

  which命令本身和type命令是非常相似的,只不过type是查找执行文件的类型,which是查找执行文件的路径。特别需要注意的是which默认是从PATH目录中查找的,所以可能会存在找不到的情况

(二)文件查找相关的命令

①whereis:寻找特定文件

  如何理解whereis是寻找特定文件的命令呢?比如说,你现在桌面创建一个hello.java,然后用一个whereis去查找实际上结果看不到任何输出。为什么呢?我明明创建了文件了啊。这主要是whereis默认查找的路径是PATH和MPATH,也就是说这个命令实际上并不能查找全部的文件夹。这也就导致了这个命令的应用场景实际上十分有限。在查找可执行命令的时候,相比于which命令只是多了MPATH路径下的情况。

②locate:从未更新数据库中,通配要查找的关键字

  我们知道Linux中的数据都存在数据库中,数据库的更新是周期性的,不同的发行版周期不同,这也就意味着你刚刚创建的文件可能不会被找到。

cd 桌面
locate hello.java
#如果你创建了hello.java文件,那么locate就会从当前目录中查找和hello.java关键字相关的文件,注意如果你创建一个hello.javao在桌面上也会被查找出来,这就是通配

③find命令

  find主要是查找那些特定时间创建的文件,比如说你想查找昨天你在桌面上创建的java文件,那么你可以这样

cd 桌面
find . -mtime 0|grep 'java'

  你还可以用find查找特定用户创建的文件,当然你还可以查找特定权限的文件。

#你可以查找由flyonthemap一天内创建的文件
#这里-exec \;都是关键字,分号为特殊字符,需要转义,{}中是利用前面查找的内容
 find . -user flyonthemap -exec find {} -mtime 0 \; 

你可能感兴趣的:(Linux命令)