首页 > 运维 > linux运维 > 正文

Linux查看命令位置whereis命令说明

P粉602998670
发布: 2025-09-09 10:07:01
原创
856人浏览过
whereis命令用于快速查找命令的可执行文件、源代码和手册页位置,帮助用户确认命令是否存在、排查故障、保障安全及编写脚本。它搜索系统预设路径,不受PATH影响,与which(查PATH中可执行文件)和type(解析命令类型)不同。通过-b、-m、-s可限定搜索类型,-u查找缺失项,-B、-M、-S配合-f可自定义搜索路径,适用于非标准安装或完整性检查场景。

linux查看命令位置whereis命令说明

在Linux系统里,

whereis
登录后复制
命令是个挺实用的工具,它主要帮你快速定位一个命令的可执行文件(binary)、源代码(source)以及它的手册页(man page)的位置。这对于系统管理员或开发者来说,是快速了解一个命令“出身”的捷径,尤其是在你需要确认一个命令是否存在、或者想深入了解其工作原理时,它提供了一个直接的查找途径。

解决方案

whereis
登录后复制
命令的使用方式非常直观,基本语法就是
whereis [选项] 命令名
登录后复制
。当你运行它时,它会在系统预设的一些标准路径下搜索指定命令的相关文件。

比如说,你想知道

ls
登录后复制
命令的所有相关文件在哪里,你只需输入:

whereis ls
登录后复制

通常你会看到类似这样的输出:

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
登录后复制

这表示

ls
登录后复制
的可执行文件在
/usr/bin/ls
登录后复制
,而它的手册页在
/usr/share/man/man1/ls.1.gz
登录后复制
。如果系统里有
ls
登录后复制
的源代码,
whereis
登录后复制
也会一并列出来。我个人觉得,这个命令的价值在于它提供了一个“全景图”,不仅仅是可执行文件,还有文档和可能的源代码,这对于理解一个工具的完整生态很有帮助。

它默认搜索的路径通常包括:

  • 可执行文件:
    /bin
    登录后复制
    ,
    /sbin
    登录后复制
    ,
    /usr/bin
    登录后复制
    ,
    /usr/sbin
    登录后复制
    ,
    /usr/local/bin
    登录后复制
    ,
    /usr/local/sbin
    登录后复制
    等。
  • 手册页:
    /usr/share/man
    登录后复制
    ,
    /usr/local/man
    登录后复制
    等。
  • 源代码:
    /usr/src
    登录后复制
    ,
    /usr/local/src
    登录后复制
    等。

这种搜索机制使得

whereis
登录后复制
在某些场景下特别有用,比如当你怀疑一个命令没有正确安装,或者想找到它的原始文档时。它不会受限于你的
PATH
登录后复制
环境变量,而是直接去这些标准位置“挖”文件。

Linux查看命令位置whereis命令说明

为什么我们需要知道Linux命令的准确位置?

这问题问得好,很多人可能觉得,我直接输入命令就能运行,何必知道它具体在哪儿呢?但实际上,知道命令的准确位置,在很多情况下是至关重要的。

首先,故障排查。想象一下,你运行一个命令,结果系统告诉你“command not found”,或者它运行起来的行为跟你预期不一样。这时候,

whereis
登录后复制
就能帮你快速确认,这个命令到底有没有安装,如果安装了,它的可执行文件路径对不对。我遇到过几次,就是因为系统里存在多个同名命令的不同版本,或者
PATH
登录后复制
环境变量配置有问题,导致运行的不是我想要的那个,
whereis
登录后复制
能帮你一眼看清。

其次,安全考量。在某些安全性要求高的环境里,你可能需要确保你执行的确实是系统提供的、经过验证的那个二进制文件,而不是被恶意替换或劫持的版本。通过

whereis
登录后复制
找到的路径,你可以进一步检查文件的权限、所有者,甚至计算哈希值来验证其完整性。这听起来有点“杞人忧天”,但对于维护系统完整性来说,是必要的步骤。

再者,编写脚本或自动化任务。在某些非交互式环境中,比如

cron
登录后复制
任务,或者一些启动脚本里,
PATH
登录后复制
环境变量可能不会像你登录shell时那样丰富。这时候,为了确保命令能够被正确执行,我们往往需要使用命令的绝对路径。
whereis
登录后复制
就能帮你快速找到这些绝对路径,避免脚本因找不到命令而失败。这其实是我在写自动化脚本时经常会用到的一个技巧,省去了不少调试时间。

Linux查看命令位置whereis命令说明

whereis 与 which、type 命令有何不同?

我个人觉得,初学者在Linux里最容易混淆的几个命令,

whereis
登录后复制
which
登录后复制
type
登录后复制
肯定算其中几个。它们都和“查找命令”有关,但侧重点完全不同。理解它们的差异,能让你更高效地使用Linux。

whereis
登录后复制
,我们前面已经讲了,它是一个文件定位器。它的目标是找到命令的可执行文件、源代码和手册页。它搜索的是一组预定义的、标准的系统目录,比如
/usr/bin
登录后复制
/usr/share/man
登录后复制
等。它不关心你的
PATH
登录后复制
环境变量,也不关心shell如何解释这个命令,它只关心这些文件是否“物理存在”于那些标准位置。

whereis ls
# 输出示例:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
登录后复制

which
登录后复制
命令则是一个路径查找器。它回答的问题是:“如果我直接输入这个命令,shell会执行哪一个?”它会按照你的
PATH
登录后复制
环境变量中定义的顺序,去查找第一个匹配的可执行文件。如果一个命令是shell内建命令或别名,
which
登录后复制
通常是找不到的。它只关心当前执行环境下的“哪个可执行文件会被运行”。

获取和设置文本框的光标位置
获取和设置文本框的光标位置

获取和设置文本框的光标位置

获取和设置文本框的光标位置 38
查看详情 获取和设置文本框的光标位置
which ls
# 输出示例:/usr/bin/ls
登录后复制

如果你给

ls
登录后复制
设置了一个别名,比如
alias ls='ls -F'
登录后复制
which ls
登录后复制
可能仍然会显示
/usr/bin/ls
登录后复制
,因为它只查找实际的可执行文件。

type
登录后复制
命令,我认为它是最“了解shell”的。它是一个命令解释器。它会告诉你shell将如何解释你输入的命令。它能识别别名(alias)、函数(function)、内建命令(builtin)以及外部可执行文件(file)。它提供的是最全面的命令解析信息。

type ls
# 如果没有别名,输出示例:ls is /usr/bin/ls
# 如果有别名,比如 alias ls='ls --color=auto'
# 输出示例:ls is aliased to `ls --color=auto'
type cd
# 输出示例:cd is a shell builtin
登录后复制

总结一下,

whereis
登录后复制
是找“文件”的,
which
登录后复制
是找“
PATH
登录后复制
里哪个会被执行”的,而
type
登录后复制
是找“shell会怎么解释这个命令”的。在实际工作中,我经常根据具体需求选择使用它们:当我想确认一个命令是否安装完整时用
whereis
登录后复制
;当我想知道当前环境下哪个版本的命令会被执行时用
which
登录后复制
;而当我想了解一个命令是别名、函数还是实际程序时,
type
登录后复制
就是我的首选。

Linux查看命令位置whereis命令说明

如何利用 whereis 查找特定类型的文件或排除目录?

whereis
登录后复制
命令虽然简单,但也提供了一些选项,让你能更精细地控制搜索行为。有时候,我们不只是想知道它在哪里,还想更精细地控制搜索范围,或者只关心某一种类型的文件。
whereis
登录后复制
也提供了一些选项来满足这种“挑剔”的需求。

1. 只查找特定类型的文件:

  • -b
    登录后复制
    (binaries):
    只搜索可执行文件。
    whereis -b bash
    # 输出示例:bash: /usr/bin/bash
    登录后复制
  • -m
    登录后复制
    (man pages):
    只搜索手册页。
    whereis -m bash
    # 输出示例:bash: /usr/share/man/man1/bash.1.gz
    登录后复制
  • -s
    登录后复制
    (sources):
    只搜索源代码。
    whereis -s bash
    # 输出示例:bash: /usr/src/bash (如果存在的话)
    登录后复制

    当你只想快速确认某个命令的文档是否存在,或者想看看它的源代码时,这些选项就非常方便。

2. 查找不寻常的条目 (

-u
登录后复制
):

这个选项比较有意思。

whereis -u
登录后复制
会查找那些在指定类型(默认是全部类型)中没有被找到所有部分的命令。比如,你可能找到了可执行文件,但没有找到手册页。

whereis -u -m -b ls  # 查找那些有二进制但没有手册页的ls条目,或者反之
# 如果ls的man page存在,可能不会有输出
# 假设有一个命令叫'mycommand',只有二进制文件,没有手册页
whereis -u -m -b mycommand
# 如果 /usr/bin/mycommand 存在,但没有 /usr/share/man/man1/mycommand.1.gz
# 输出示例:mycommand: /usr/bin/mycommand
登录后复制

这个功能在检查系统安装完整性时偶尔会用到,比如你安装了一个软件包,但发现它的文档缺失了。

3. 指定或排除搜索路径 (

-b
登录后复制
,
-m
登录后复制
,
-s
登录后复制
,
-f
登录后复制
):

虽然

whereis
登录后复制
默认会搜索标准路径,但你也可以告诉它去哪里找,或者在哪里不找。

  • -B <目录列表>
    登录后复制
    :
    指定搜索二进制文件的目录。
  • -M <目录列表>
    登录后复制
    :
    指定搜索手册页的目录。
  • -S <目录列表>
    登录后复制
    :
    指定搜索源代码的目录。 这些选项需要和
    -f
    登录后复制
    一起使用,
    -f
    登录后复制
    表示后续的参数是文件名。
# 假设你想在 /opt/custom_bin 和 /usr/local/bin 查找 grep 的二进制文件
whereis -b -B /opt/custom_bin /usr/local/bin -f grep
# 输出示例:grep: /usr/local/bin/grep
登录后复制

这个高级用法在处理非标准安装路径或者调试特定环境问题时非常有用。比如,我曾经在某个旧系统上遇到过一个第三方工具,它的二进制文件和手册页都放在一个非常规的目录里,这时候指定搜索路径就派上用场了。

总的来说,

whereis
登录后复制
虽然看起来简单,但结合这些选项,它能帮助我们更精确地定位和管理系统中的命令文件,这对于维护一个健康、有序的Linux环境是不可或缺的。

以上就是Linux查看命令位置whereis命令说明的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号