本教程的重点是通过命令行在 Linux 中查找您要查找的内容。
locate
Linux 有多种从命令行查找应用程序、命令、文件等的方法。可能最容易使用的是locate。Locate,后跟一个关键字,将遍历您的文件系统并找到该词的每一次出现。
![](https://static.wixstatic.com/media/6a4a49_f539120a12da49508a1f1b53fc6cd7ce~mv2.png/v1/fill/w_740,h_274,al_c,lg_1,q_85,enc_auto/6a4a49_f539120a12da49508a1f1b53fc6cd7ce~mv2.png)
有时locate发现的信息太多了。此外,如果您刚刚创建了一个文件,它可能不会出现在此列表中,因为locate使用每天更新一次的数据库。您今天创建的文件通常要到明天才会出现在该数据库中。
whereis
如果我们知道我们正在寻找的是二进制文件(类似于 Windows 中的可执行文件),Linux 有一个特定的命令。这个命令是whereis。whereis不仅会返回二进制文件的位置,还会返回它的手册或手册页。
kali > whereis aircrack-ng
![](https://static.wixstatic.com/media/6a4a49_48b9e2e0ff54462b9a3fc43deefdb049~mv2.png/v1/fill/w_740,h_74,al_c,lg_1,q_85,enc_auto/6a4a49_48b9e2e0ff54462b9a3fc43deefdb049~mv2.png)
正如您在上面看到的,whereis仅返回 aircrack-ng 二进制文件,而不是像 locate 那样返回所有出现的 aircrack-ng。
which
which命令更加具体。它只会返回 Linux 中 PATH 变量中二进制文件的位置。
kali > which aircrack-ng
![](https://static.wixstatic.com/media/6a4a49_59be0243d72e42adaa220f573c7cbdd3~mv2.png/v1/fill/w_740,h_56,al_c,lg_1,q_85,enc_auto/6a4a49_59be0243d72e42adaa220f573c7cbdd3~mv2.png)
正如您在上面看到的,它能够在 PATH 变量中列出的目录中找到一个二进制文件。我们将在有关 PATH 变量的后续教程中做更多的事情,但现在知道 PATH 变量是操作系统查找您在命令行键入的二进制文件(命令)的地方就足够了。至少,这通常包括 /usr/bin。
find
find命令是最强大和最灵活的查找实用程序。find能够在任何指定目录中开始搜索,并查找许多不同的参数,当然包括文件名,但也可以找到满足其他条件的文件,例如 ;
1.创建或修改日期
2. 所有者
3.组
4.权限
5.尺寸
find的基本语法是;
find <要搜索的目录列表> <选项> <表达式>
因此,如果我想搜索从文件系统(根)/目录顶部开始的名称为 apache2 的文件,我会键入;
kali > find / -type f -name apache2
/是开始搜索的目录
-type在这种情况下是文件类型 -f 或普通文件
-name按名称或 apache2 搜索
![](https://static.wixstatic.com/media/6a4a49_85eab43d235c4c10a92c0bb3efeb4573~mv2.png/v1/fill/w_740,h_177,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/6a4a49_85eab43d235c4c10a92c0bb3efeb4573~mv2.png)
如您所见,find 命令从文件系统的顶部开始,遍历每个目录以查找我们的 apache2 命令。它找到了许多它的实例并为我们列出了它们。不幸的是,这样的搜索很慢并且需要find在每个目录中查找。如果我们只希望它在 /etc 目录中查找怎么办?
在这种情况下,我们可以从 /etc 目录开始搜索,并且只在该目录及其子目录中寻找 apache2 的出现。让我们试试这个。kali > find /etc -type f -name apache2
![](https://static.wixstatic.com/media/6a4a49_1662cb57ac9f455fbde36078406e875b~mv2.png/v1/fill/w_740,h_90,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/6a4a49_1662cb57ac9f455fbde36078406e875b~mv2.png)
正如我们在上面看到的,这种更快的搜索只在 /etc 目录及其子目录中找到了那些 apache2 的出现。同样重要的是要注意,与 locate 等其他一些搜索命令不同,find仅显示完全匹配的名称。如果文件 apache2 有扩展名,例如 apache2.conf,它将不匹配。我们可以通过使用通配符(*.、? 和 [])来弥补这个限制。在这种情况下,让我们在 /etc 目录中查找以 apache2 开头并具有任何扩展名的所有文件(我们可能正在查找 apache2.conf)。我们可以编写一个带有通配符的查找命令,例如;
kali > find /etc -type f -name 'apache2.*'![](https://static.wixstatic.com/media/6a4a49_3ed72462d25c4a47ab06f23307d2bc86~mv2.png/v1/fill/w_740,h_53,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/6a4a49_3ed72462d25c4a47ab06f23307d2bc86~mv2.png)
kali > ps aux
![](https://static.wixstatic.com/media/6a4a49_3b2f50e7b53d4115a17c19219aa0c137~mv2.png/v1/fill/w_740,h_419,al_c,lg_1,q_85,enc_auto/6a4a49_3b2f50e7b53d4115a17c19219aa0c137~mv2.png)
如您所见,这为我提供了该系统中运行的所有服务。如果我只想在这个长列表中找到一项服务怎么办?
我可以通过将 ps 的输出传输到grep并查找关键字来完成此操作。例如,如果我想知道 apache2 服务是否正在运行,我可以输入;
kali > ps aux | grep apache2
此命令表示“显示我的所有服务,然后将该输出发送到 grep,它将在其中查找关键字 apache2,然后仅显示该输出”。
正如您在上面看到的,grep 能够过滤掉所有其他服务,并且只显示名称中包含 apache2 的服务,从而节省了我大量的时间和视力扫描列表手动查找 apache2。
参考链接:https://www.hackers-arise.com/post/2016/08/08/Linux-Basics-for-the-Aspiring-Hacker-Part-2-Finding-stuff
标签:文件,--,目录,apache2,命令,查找,Liunx,基础知识,find From: https://www.cnblogs.com/wgd-elwood/p/17202630.html