木子金玉 發表於 2025-7-7 10:13:54

Linux基本命令whereis命令详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、基本语法</a></li><li><a href="#_label1">二、主要功能</a></li><li><a href="#_label2">三、常用选项</a></li><li><a href="#_label3">四、使用示例</a></li><li><a href="#_label4">五、whereis 与 which 的区别(重点)</a></li><li><a href="#_label5">六、注意事项</a></li><ul class="second_class_ul"><li><a href="#_lab2_5_0">updatedb的作用</a></li></ul></ul></div><blockquote><p><code>whereis</code>&nbsp;是 Linux 系统中一个非常有用的命令,用于定位二进制程序、源代码文件和手册页的位置。与&nbsp;<code>which</code>&nbsp;命令不同,<code>whereis</code>&nbsp;不仅能找到可执行文件,还能找到相关的文档和源代码,它也是系统管理员和开发人员在查找命令相关文件时的有用工具,特别是在需要了解命令的完整安装位置时非常实用。</p></blockquote>
<p class="maodian"><a name="_label0"></a></p><h2>一、基本语法</h2>
<div class="jb51code"><pre class="brush:bash;">whereis [选项] 文件名</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>二、主要功能</h2>
<p><code>whereis</code>&nbsp;命令会搜索以下类型的文件:</p>
<ul><li><p>二进制文件(可执行程序)</p></li><li><p>源代码文件</p></li><li><p>手册页(man pages)</p></li></ul>
<p class="maodian"><a name="_label2"></a></p><h2>三、常用选项</h2>
<table><thead><tr><th>选项</th><th>说明</th></tr></thead><tbody><tr><td><code>-b</code></td><td>只搜索二进制文件</td></tr><tr><td><code>-m</code></td><td>只搜索手册页文件</td></tr><tr><td><code>-s</code></td><td>只搜索源代码文件</td></tr><tr><td><code>-u</code></td><td>搜索不常见的文件(即没有文档、源代码或二进制文件的命令)</td></tr><tr><td><code>-B</code></td><td>指定二进制文件的搜索路径</td></tr><tr><td><code>-M</code></td><td>指定手册页的搜索路径</td></tr><tr><td><code>-S</code></td><td>指定源代码的搜索路径</td></tr><tr><td><code>-f</code></td><td>终止前面的路径列表(与&nbsp;<code>-B</code>,&nbsp;<code>-M</code>,&nbsp;<code>-S</code>&nbsp;一起使用)</td></tr></tbody></table>
<p class="maodian"><a name="_label3"></a></p><h2>四、使用示例</h2>
<ol><li><p><strong>基本使用</strong>&nbsp;- 查找命令的所有相关文件:</p>
<div class="jb51code"><pre class="brush:bash;">whereis ls</pre></div>
<p><strong>输出示例:</strong></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093980.png" /></p></li><li><p><strong>只查找二进制文件</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">whereis -b gcc</pre></div>
<p><strong>输出示例:</strong></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093937.png" /></p></li><li><p><strong>只查找手册页</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">whereis -m printf</pre></div>
<p><strong>输出示例:</strong></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093912.png" /></p></li><li><p><strong>只查找源代码</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">whereis -s python</pre></div>
<p><span>&nbsp; &nbsp; <code>w</code><code>hereis</code>&nbsp;的默认行为:如果找不到匹配的文件,它只会返回命令名称后跟冒号&nbsp;<code>:</code>,表示&ldquo;未找到&rdquo;。<code>whereis -s</code>&nbsp;专门用于查找&nbsp;源代码文件(source code),但 Python 的源代码通常不会默认安装在标准系统路径中,因此&nbsp;<code>whereis</code>&nbsp;可能找不到。</span></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093993.png" /></p></li><li><p><strong>查找不常见的命令(即没有文档、源代码或二进制文件的命令):</strong></p>
<div class="jb51code"><pre class="brush:bash;">whereis -u *</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093983.png" /></p></li><li><p><strong>指定搜索路径</strong>:</p>
<div class="jb51code"><pre class="brush:bash;">whereis -B /usr/local/bin -f python</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093914.png" /></p></li></ol>
<ul><li><p><code>whereis</code>:Linux 命令,用于查找二进制文件、手册页和源代码文件。</p></li><li><p><code>-B /usr/local/bin</code>:指定只搜索二进制文件,并且限定在&nbsp;<code>/usr/local/bin</code>&nbsp;目录下查找。</p></li><li><p><code>-f</code>:表示终止&nbsp;<code>-B</code>&nbsp;指定的路径列表,后面接要查找的命令名(这里是&nbsp;<code>python</code>)。</p></li><li><p><code>python</code>:要查找的目标命令。</p></li></ul>
<p class="maodian"><a name="_label4"></a></p><h2>五、whereis 与 which 的区别(重点)</h2>
<table><thead><tr><th>特性</th><th>whereis</th><th>which</th></tr></thead><tbody><tr><td><strong>搜索范围</strong></td><td><strong>二进制文件、手册页、源代码</strong></td><td><strong>仅PATH中的可执行文件</strong></td></tr><tr><td><strong>显示结果</strong></td><td><strong>所有相关文件路径</strong></td><td><strong>第一个找到的可执行文件路径</strong></td></tr><tr><td><strong>搜索速度</strong></td><td><strong>较快(使用数据库)</strong></td><td><strong>较慢(实时搜索)</strong></td></tr><tr><td><strong>适用场景</strong></td><td><strong>查找命令的所有相关文件</strong></td><td><strong>确定执行的是哪个版本</strong></td></tr></tbody></table>
<p class="maodian"><a name="_label5"></a></p><h2>六、注意事项</h2>
<ol><li><p><code>whereis</code>&nbsp;通常比&nbsp;<code>which</code>&nbsp;更快,因为它搜索的是系统预先构建的数据库,而不是实时搜索文件系统。</p></li><li><p>在某些系统上,<code>whereis</code>&nbsp;可能不会找到所有文件,这取决于数据库的更新频率。</p></li><li><p>如果找不到预期的文件,可以尝试使用&nbsp;<code>updatedb</code>&nbsp;命令更新数据库(需要root权限):</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093918.png" /></p></li></ol>
<p>再使用&nbsp;<code>updatedb</code>&nbsp;命令更新数据库:</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093934.png" /></p>
<p class="maodian"><a name="_lab2_5_0"></a></p><h3>updatedb的作用</h3>
<ul><li><p><code>updatedb</code>&nbsp;是&nbsp;<code>mlocate</code>&nbsp;包提供的工具,用于更新系统的文件索引数据库(<code>/var/lib/mlocate/mlocate.db</code>)。</p></li><li><p><code>whereis</code>、<code>locate</code>&nbsp;等命令依赖此数据库快速查找文件,而非实时扫描磁盘。</p></li><li><p>如果新安装了软件(如 Python 源码),但数据库未更新,<code>whereis</code>&nbsp;可能无法找到它。</p></li></ul>
頁: [1]
查看完整版本: Linux基本命令whereis命令详解