Liunx基础知识 --2 查找

本教程的重点是通过命令行在 Linux 中查找您要查找的内容。

locate

Linux 有多种从命令行查找应用程序、命令、文件等的方法。可能最容易使用的是locateLocate,后跟一个关键字,将遍历您的文件系统并找到该词的每一次出现。

有时locate发现的信息太多了。此外,如果您刚刚创建了一个文件,它可能不会出现在此列表中,因为locate使用每天更新一次的数据库。您今天创建的文件通常要到明天才会出现在该数据库中。

 

whereis

如果我们知道我们正在寻找的是二进制文件(类似于 Windows 中的可执行文件),Linux 有一个特定的命令。这个命令是whereiswhereis不仅会返回二进制文件的位置,还会返回它的手册或手册页。

kali > whereis aircrack-ng

正如您在上面看到的,whereis仅返回 aircrack-ng 二进制文件,而不是像 locate 那样返回所有出现的 aircrack-ng。

which

which命令更加具体。它只会返回 Linux 中 PATH 变量中二进制文件的位置。

kali > which aircrack-ng

正如您在上面看到的,能够在 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 搜索

如您所见,find 命令从文件系统的顶部开始,遍历每个目录以查找我们的 apache2 命令。它找到了许多它的实例并为我们列出了它们。不幸的是,这样的搜索很慢并且需要find在每个目录中查找。如果我们只希望它在 /etc 目录中查找怎么办?

在这种情况下,我们可以从 /etc 目录开始搜索,并且只在该目录及其子目录中寻找 apache2 的出现。让我们试试这个。

kali > find /etc -type f -name apache2

正如我们在上面看到的,这种更快的搜索只在 /etc 目录及其子目录中找到了那些 apache2 的出现。同样重要的是要注意,与 locate 等其他一些搜索命令不同,find仅显示完全匹配的名称。如果文件 apache2 有扩展名,例如 apache2.conf,它将不匹配。我们可以通过使用通配符(*.、? 和 [])来弥补这个限制。在这种情况下,让我们在 /etc 目录中查找以 apache2 开头并具有任何扩展名的所有文件(我们可能正在查找 apache2.conf)。我们可以编写一个带有通配符的查找命令,例如;

 kali > find /etc -type f -name 'apache2.*'
 请注意,我必须在我使用通配符搜索的名称周围使用单引号 ' '。当我运行此命令时,我在 /etc 目录中找到 2 个以 apache2 开头的文件,包括 apache2.conf 文件。
 
grep
很多时候,在使用命令行时,我们可能希望找到特定的关键字。grep 是一个搜索关键字的过滤器。当输出从一个命令通过管道传输到另一个命令时,通常会使用它。我将在本系列的未来教程中做更多关于管道的工作,但现在足以说明 Linux(和 Windows)允许我们获取一个命令的输出并将其发送到另一个命令。这称为管道,我们使用| 执行此操作(此字符通常位于 ENTER 键上方)。因此,例如,如果我想查看我的 Linux 系统上运行的所有服务,我可以使用ps命令,然后使用 aux 开关,例如;

kali > ps aux

如您所见,这为我提供了该系统中运行的所有服务。如果我只想在这个长列表中找到一项服务怎么办?

我可以通过将 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

posted @   wgd_elwood  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示