Linux 中 locate 和 which 的区别

Nad*_*ddy 27 linux locate which

Linuxlocatewhich在 Linux 中有什么区别?

为什么当我使用locate mentor它时会列出所有导师,但当我使用which mentor它时说“没有导师......” - 这是什么意思?

Dav*_*ill 45

locate和 和有which什么区别?

locate 使用先前构建的数据库来定位文件。

locate读取由updatedb(8)准备的一个或多个数据库,并将至少与 PATTERN 之一匹配的文件名写入标准输出,每行一个。

定位(1) - Linux 手册页

updatedb创建或更新locate(1)使用的数据库。如果数据库已经存在,它的数据会被重用,以避免重新读取没有改变的目录。

updatedb通常由cron(8)每天运行以更新默认数据库 ( /var/lib/mlocate/mlocate.db)

源更新b (8) - Linux 手册页


which通过在PATH环境变量的目录中搜索来查找可执行文件。

which接受一个或多个参数。对于它的每个参数,它打印到stdout在 shell 提示符下输入此参数时将被执行的可执行文件的完整路径。它通过在环境变量中列出的目录中搜索可执行文件或脚本来完成此操作PATH

使用与bash(1)相同的算法。

来源which(1) - Linux 手册页


locate mentor列出导师,但which mentor说“没有导师……”

这意味着什么?

mentor可以在locate数据库中找到一些已命名的文件。

mentorPATH.

  • “updatedb” - 很高兴知道不仅仅是微软为事物提出了过于非特定的名称。(在 Win32 中,`DeleteObject` 删除一个 GDI 对象,`CloseHandle` 关闭内核句柄等。类似的 `updatedb` 更新 `locate` DB) (2认同)

小智 11

which是定位命令(which返回将在当前环境中执行的文件/链接的路径名)

locate是按名称查找文件(locate读取一个或多个由其准备的数据库updatedb并将至少匹配其中一种模式的文件名写入标准输出,每行一个)

  • 请提供您的来源的归属——您的答案中的描述直接取自这些实用程序的手册页。 (2认同)

hee*_*ayl 5

locate默认情况下采用 glob 模式(也可以使用 Regex 模式)并在数据库中搜索/var/lib/mlocate/mlocate.db与该模式匹配的任何文件名。

which是在由PATH环境变量解释的目录中搜索命令的完整路径的命令。