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> 是 Linux 系统中一个非常有用的命令,用于定位二进制程序、源代码文件和手册页的位置。与 <code>which</code> 命令不同,<code>whereis</code> 不仅能找到可执行文件,还能找到相关的文档和源代码,它也是系统管理员和开发人员在查找命令相关文件时的有用工具,特别是在需要了解命令的完整安装位置时非常实用。</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> 命令会搜索以下类型的文件:</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>终止前面的路径列表(与 <code>-B</code>, <code>-M</code>, <code>-S</code> 一起使用)</td></tr></tbody></table>
<p class="maodian"><a name="_label3"></a></p><h2>四、使用示例</h2>
<ol><li><p><strong>基本使用</strong> - 查找命令的所有相关文件:</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> <code>w</code><code>hereis</code> 的默认行为:如果找不到匹配的文件,它只会返回命令名称后跟冒号 <code>:</code>,表示“未找到”。<code>whereis -s</code> 专门用于查找 源代码文件(source code),但 Python 的源代码通常不会默认安装在标准系统路径中,因此 <code>whereis</code> 可能找不到。</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>:指定只搜索二进制文件,并且限定在 <code>/usr/local/bin</code> 目录下查找。</p></li><li><p><code>-f</code>:表示终止 <code>-B</code> 指定的路径列表,后面接要查找的命令名(这里是 <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> 通常比 <code>which</code> 更快,因为它搜索的是系统预先构建的数据库,而不是实时搜索文件系统。</p></li><li><p>在某些系统上,<code>whereis</code> 可能不会找到所有文件,这取决于数据库的更新频率。</p></li><li><p>如果找不到预期的文件,可以尝试使用 <code>updatedb</code> 命令更新数据库(需要root权限):</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202507/2025070710093918.png" /></p></li></ol>
<p>再使用 <code>updatedb</code> 命令更新数据库:</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> 是 <code>mlocate</code> 包提供的工具,用于更新系统的文件索引数据库(<code>/var/lib/mlocate/mlocate.db</code>)。</p></li><li><p><code>whereis</code>、<code>locate</code> 等命令依赖此数据库快速查找文件,而非实时扫描磁盘。</p></li><li><p>如果新安装了软件(如 Python 源码),但数据库未更新,<code>whereis</code> 可能无法找到它。</p></li></ul>
頁:
[1]