0

0

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

P粉602998670

P粉602998670

发布时间:2025-09-09 10:07:01

|

898人浏览过

|

来源于php中文网

原创

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
通常是找不到的。它只关心当前执行环境下的“哪个可执行文件会被运行”。

Lessie AI
Lessie AI

一款定位为「People Search AI Agent」的AI搜索智能体

下载
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环境是不可或缺的。

相关专题

更多
function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

476

2023.08.04

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

163

2023.10.07

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1348

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

701

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

572

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

545

2023.07.20

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

PHP入门到实战消息队列RabbitMQ
PHP入门到实战消息队列RabbitMQ

共22课时 | 1.3万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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