标签 whereis 下的文章

这是一份关于如何理解 Linux 和 BSD 中 whereis 命令的初学者指南,还包括几个例子。

这篇文章是 Linux 命令 学习系列的一部分。

whereis 命令

whereis 命令是一个命令行程序,可以帮助你找出任何二进制可执行文件、源文件或手册页的路径或位置。

在告诉你如何使用 whereis 命令之前,让我们先看看其语法。

语法

以下是 whereis 命令的语法:

whereis [OPTIONS] FILE_NAME

whereis 命令的参数是你要搜索的程序名或文件名。该参数是必须的。

默认情况下,它在环境变量(如 HOMEUSERSHELL 等)中定义的路径中搜索程序。

让我们看下一些例子。

Linux 和 BSD 中 whereis 命令的例子

下面是 whereis 命令的一个简单例子,我试图搜索 firefox。在下面的输出中,你可以看到包含 firefox 文件或可执行文件的路径列表。

$ whereis firefox

firefox: /usr/bin/firefox /usr/lib64/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

Linux 中 whereis 命令的简单例子

带有选项 -l 的命令会显示其搜索的路径列表。比如:

$ whereis -l

bin: /usr/bin
bin: /usr/sbin
bin: /usr/lib
bin: /usr/lib64
bin: /etc
bin: /usr/games
bin: /usr/local/bin
bin: /usr/local/sbin
bin: /usr/local/etc
bin: /usr/local/lib
bin: /usr/local/games

如果 whereis 命令没有找到任何东西,它只显示参数的名称。例如,如果我在 Linux 中搜索 nano,它没有安装,它的输出如下:

$ whereis nano
nano:

如果你想搜索更多的参数,你可以随时添加多个参数。例如,下面的命令同时搜索 bashnano,输出结果是这样的:

$ whereis bash nano

bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz
nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz

你也可以使用 -b 选项搜索特定的文件类型,比如二进制文件。下面的命令只告诉你 nano 的二进制路径。

$ whereis -b nano

nano: /usr/bin/nano /usr/share/nano

同样,-s 选项可以搜索源文件,而 -m 选项可以搜索手册页。

$ whereis -m nano

nano: /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz

你也可以结合上面的选项来进行更广泛的搜索。例如,下面的命令可以搜索 nanofirefox 的二进制、手册页;而对于 bash,只搜索手册页。

$ whereis -bm nano firefox -m bash

nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
firefox-m:
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz

下面是选项的摘要:

选项描述
-b只搜索二进制文件。
-m只搜索手册页部分。
-s只搜索源码。
-u搜索不寻常的条目。如果一个文件没有所要求的每种类型的条目,就被称为不寻常。因此,whereis -m -u * 会查询当前目录中没有文档的那些文件。
-B改变或限制 whereis 搜索二进制文件的地方。
-M更改或限制 whereis 搜索手册的位置。
-S更改或以其他方式限制 whereis 搜索源码的位置。
-f终止上一个目录列表并指示文件名的开始,并且必须在使用任何 -B-M-S 选项时使用。

总结

我希望这篇文章能够帮助你理解 whereis 命令及其基本原理。你也可以阅读 whereis 手册页 来了解更多。如果你有任何问题,请告诉我。


via: https://www.debugpoint.com/whereis-command-linux/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

有时,在使用命令行的时候,我们需要快速找到某一个命令的二进制文件所在位置。这种情况下可以选择 find 命令,但使用它会耗费时间,可能也会出现意料之外的情况。有一个专门为这种情况设计的命令:whereis

在这篇文章里,我们会通过一些便于理解的例子来解释这一命令的基础内容。但在这之前,值得说明的一点是,下面出现的所有例子都在 Ubuntu 16.04 LTS 下测试过。

Linux whereis 命令

whereis 命令可以帮助用户寻找某一命令的二进制文件,源码以及帮助页面。下面是它的格式:

whereis [options] [-BMS directory... -f] name...

这是这一命令的 man 页面给出的解释:

whereis 可以查找指定命令的二进制文件、源文件和帮助文件。 被找到的文件在显示时,会去掉主路径名,然后再去掉文件的(单个)尾部扩展名 (如: .c),来源于源代码控制的 s. 前缀也会被去掉。接下来,whereis 会尝试在标准的 Linux 位置里寻找具体程序,也会在由 $PATH$MANPATH 指定的路径中寻找。

下面这些以 Q&A 形式出现的例子,可以给你一个关于如何使用 whereis 命令的直观感受。

Q1. 如何用 whereis 命令寻找二进制文件所在位置?

假设你想找,比如说,whereis 命令自己所在位置。下面是你具体的操作:

whereis whereis

How to find location of binary file using whereis

需要注意的是,输出的第一个路径才是你想要的结果。使用 whereis 命令,同时也会显示帮助页面和源码所在路径。(如果能找到的情况下会显示,但是在这一例中没有找到)所以你在输出中看见的第二个路径就是帮助页面文件所在位置。

Q2. 怎么在搜索时规定只搜索二进制文件、帮助页面,还是源代码呢?

如果你想只搜索,假设说,二进制文件,你可以使用 -b 这一命令行选项。例如:

whereis -b cp

How to specifically search for binaries, manuals, or source code

类似的, -m-s 这两个 选项分别对应 帮助页面和源码。

Q3.如何限制 whereis 命令搜索位置?

默认情况下,whereis 是从由匹配符所定义的硬编码路径来寻找文件的。但如果你想的话,你可以用命令行选项来限制搜索。例如,如果你只想在 /usr/bin 寻找二进制文件,你可以用 -B 这一选项来实现。

whereis -B /usr/bin/ -f cp

注意:使用这种方式时可以给出多个路径。使用 -f 这一选项来明确分隔目录列表和要搜索的文件名。

类似的,如果你想只搜索帮助文件或源码,你可以对应使用 -M-S 这两个选项。

Q4. 如何查看 whereis 的搜索路径?

与此相对应的也有一个选项。只要在 whereis 后加上 -l

whereis -l

这是例子的部分输出结果:

How to see paths that whereis uses for search

Q5. 如何找到一个有异常条目的命令?

对于 whereis 命令来说,如果一个命令对每个显式的请求类型都不止一项,则该命令被视为异常。例如,没有可用文档的命令,或者对应文档分散在各处的命令都可以算作异常命令。 当使用 -u 这一选项,whereis 就会显示那些有异常条目的命令。

例如,下面这一例子就显示,在当前目录中,没有对应文档或有多个文档的命令。

whereis -m -u *

总结

我觉得,whereis 不是那种你需要经常使用的命令行工具。但在遇到某些特殊情况时,它绝对会让你的生活变得轻松。我们已经涉及了这一工具提供的一些重要命令行选项,所以要注意练习。想了解更多信息,直接去看它的 man 页面吧。


via: https://www.howtoforge.com/linux-whereis-command/

作者:Himanshu Arora 译者:wenwensnow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在数千个 Linux 系统上的命令/程序中,知道给定命令的类型和目的以及其在系统上的位置(绝对路径)对于新手来说可能是一个挑战。

知道命令/程序的一些细节不仅有助于 Linux 用户掌握大量命令,还能使用户理解命令行或脚本在系统上的操作。

因此,在本文中我们将向你解释五个有用的命令,用于显示给定命令的简短描述和位置。

要在系统上发现新命令,请查看 PATH 环境变量中的所有目录。这些目录存储系统上安装的所有命令/程序。

一旦你找到一个有趣的命令,在继续阅读更多关于它的手册页之前,请尝试如下收集一些简要的信息。

假设你输出了 PATH 的值,然后进到其中的一个目录 /usr/local/bin,注意到一个名为 fswatch(监视文件修改更改)的新命令:

$ echo $PATH
$ cd /usr/local/bin

Find New Commands in Linux

在 Linux 中找出新命令

现在让我们在 Linux 中用不同的方法找出 fswatch 命令的描述和位置。

1、 whatis 命令

whatis 用于显示你作为参数输入的命令名的单行描述(例如下面命令中的 fswatch)。

如果描述太长,一些部分在默认情况下会被省略,使用 -l 标志来显示完整的描述。

$ whatis fswatch
$ whatis -l fswatch

Linux whatis Command Example

Linux whatis 命令示例

2、 apropos 命令

apropos 会搜索手册页名称和关键字描述(以命令名作为正则表达式搜索)。

使用 -l 标志来显示完整的描述。

$ apropos fswatch 
$ apropos -l fswatch

Linux apropos Command Example

Linux apropos 命令示例

默认上,apropos 会如示例那样输出所有匹配的行。你可以使用 -e 选项来精确匹配:

$ apropos fmt
$ apropos -e fmt

Linux apropos Command Show by Keyword

Linux apropos 命令根据关键词显示

3、 type 命令

type 命令会输出给定命令的完整路径名,此外,如果输入的命令名不是做为独立存储在磁盘的文件的程序,type 还会告诉你命令分类:

  • shell 内置命令
  • shell 关键字或保留字
  • 别名
$ type fswatch 

Linux type Command Example

Linux type 命令示例

当命令是另外一个命令的别名时,type 会显示运行别名时所执行的命令。使用 alias 命令可以查看你系统上创建的所有别名:

$ alias
$ type l
$ type ll

Show All Aliases in Linux

显示 Linux 中所有别名

4、 which 命令

which 可以帮助命令定位命令,它会打印出命令的绝对路径:

$ which fswatch 

Find Linux Command Location

找出 Linux 命令位置

一些二进制文件存在于 PATH 环境变量中的多个目录,使用 -a 标志来找出所有匹配的路径名。

5、 whereis 命令

whereis 定位指定命令名的二进制、源和帮助页文件,如下所示:

$ whereis fswatch
$ whereis mkdir 
$ whereis rm

Linux whereis Command Example

Linux whereis 命令示例

虽然上面的命令对于查找关于命令/程序的一些快速信息很重要,但是该命令的手册总是可以提供完整的文档,它还包括其他相关程序的列表:

$ man fswatch

在本文中,我们回顾了五个简单的命令,用于显示命令的简短的手册描述和位置。 你可以在反馈栏中对此文章做出贡献或提出问题。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin、web 开发人员,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/find-linux-command-description-and-location/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出