which gcc 和 dpkg -l | grep gcc 有什么区别

which gcc 和 dpkg -l | grep gcc 有什么区别

基于 Ubuntu 12.04 手册页which

如果其参数是作为严格符合 POSIX 标准的 shell 中的命令给出的,则返回将在当前环境中执行的文件(或链接)的路径名。它通过在 PATH 中搜索与参数名称匹配的可执行文件来实现此目的。它不跟踪符号链接。

我还知道,如果您想确保已安装某个程序,您可以输入dpkg -l | grep myprogram

最近,我从一个 deb 包中下载了 gcc41 和 g++41。我使用以下命令安装了它们:sudo dpkg -i gcc41-compat-4.1.2_i386.deb g++41-compat-4.1.2_i386.deb

我的问题是,当我打字时dpkg -l | grep gcc,我看到了这个

ii  gcc                                    4:4.6.3-1ubuntu5                        GNU C compiler
ii  gcc-4.5                                4.5.3-12ubuntu2                         The GNU C compiler
ii  gcc-4.5-base                           4.5.3-12ubuntu2                         The GNU Compiler Collection (base package)
ii  gcc-4.6                                4.6.3-1ubuntu5                          GNU C compiler
ii  gcc-4.6-base                           4.6.3-1ubuntu5                          GCC, the GNU Compiler Collection (base package)
ii  gcc41-compat                           4.1.2                                   No description
ii  libgcc1                                1:4.6.3-1ubuntu5

如您所见,gcc41-compat已安装,但当我输入时which gcc41 没有任何结果。根据我上面提到的手册页,我应该看到一些东西。它在哪里?或者我的结论的哪一部分是错误的?

答案1

  • which

    给出二进制安装目录的位置。它用作which <pkgname>

    因此命令

    which gcc
    

    给出

    /usr/bin/gcc
    
  • dpkg -i

    dpkg -i用于安装。与查找包目录无关。

  • dpkg -l

    dpkg -l用于查找包是否已安装。dpkg -l <pkgname>将为您提供与给定名称匹配的已安装包的名称的输出。dpkg -l提供所有包的列表。

  • write

    它用于向其他用户发送消息。

    我不知道你为什么用这个。

  • grep

    仅显示输出的相关部分。这在管道命令时很有用。


  1. 如果你想找到是否gcc已安装,最好的方法是使用

    dpkg -l|grep gcc
    

    这将显示所有名称中包含 gcc 的软件包(已安装),

    您也可以使用,dpkg -l gcc但它的输出仅显示那些仅包含 gcc 的包。

  2. 如果你想检查gcc二进制文件的位置$PATH,请尝试

    which gcc
    

    尽管也有一些其他的。

相关内容