如何获得可用于Ubuntu的所有命令的列表?


22

我想更频繁地开始使用终端,但是我不知道可以使用哪些不同的命令。有没有办法列出我可以使用的所有不同命令?

Answers:


25

第一种方法

注意:感谢@Rmano。此方法不适用于 zshshell。

一个简单的命令:

ls ${PATH//:/ }

这将列出$PATH环境变量中的所有命令。

要将结果存储在文件中,可以将输出重定向到文件。

ls ${PATH//:/ } > mycommands.txt

请注意,如果您的目录名称中$PATH包含空格,这将返回错误。在这种情况下,请改用以下方法:

while read -d ':' dir; do echo "$dir"; done <<<$PATH

第二种方法

您也可以使用:

compgen -c | sort -u > commands && less commands

第三种方法

另一种方法是双击Tab

第四种方法

使用find命令的另一种方法:

find {,/usr}/{,s}bin -printf '%f\n\0'

请注意,第一个命令可在中使用,bash但不能在中使用zsh,该命令默认情况下禁用了单词拆分。refining-linux.org/archives/38/…–
Rmano

11

如果您正在使用bash(这是所有正式的Ubuntu版本中的默认外壳),请运行compgen -c以查看可用的命令,包括别名。


那只是猛击吗?
Braiam 2014年

1
甚至包括基于gui的程序的命令。因此,如果您这样做compgen -c | grep thunar并且安装了Thunar文件管理器,那么您还将看到与Thunar相关的命令。

1
嗯...在Debian中不起作用。哪个软件包提供了?
Braiam 2014年

2
@Rinzwind对此进行了解释,我正在使用zsh。
Braiam 2014年

1
@ vasa1:这个答案会更笼统吗?我的意思是,它只为bash提供解决方案,但是正如Braiam指出的那样,它不适用于zsh ...如果可能,请扩大答案以迎合更大的受众-显然,只有在您知道答案的时候才:-)
Aditya 2014年

4

开放端子Ctrl+ Alt+ t和运行这个命令:

whatis `compgen -c` | more 

这将列出所有命令以及每个命令的简单描述。

如果要保存列表,可以将结果重定向到输出文件中

whatis `compgen -c` > listOfCommands.txt

那么,为什么要使用whatis命令。该命令 man whatis给出:

每个手册页中都有简短说明。
whatis会搜索手册页名称,并显示匹配名称的手册页说明。

所以用简单的话whatis概括一下。每个命令的描述


+1了解更多信息。whatis`compgen -c` | sort> listOfCommands.txt将有助于进入排序列表。
Saurav Kumar 2014年

另一个有用的命令:apropos <keyword>搜索所有命令及其简短描述并显示结果
Aloso

3

打开一个终端,然后按Tab两次该键。


1
-1,因为这不是标准的。
Lorenzo Ancora 2014年

@LorenzoAncora为什么不是标准的?并非所有的Ubuntu都具有自动补全功能,并且将Tab作为标准行为吗?
dadexix86 2014年

2
默认值==标准:将来,我们可能会拥有一个不支持该机制的控制台,因为它不是标准的。此外,TAB标准可能会发挥不同的作用。一个标准过程列出了“ bin”的内容,因为它是官方FHS标准的一部分,并且任何Linux / Unix系统都具有该目录。遵守标准可确保Ubuntu的正确功能(以及社区帮助用户的能力)。
Lorenzo Ancora 2014年

好的,谢谢您的解释:)我认为Ubuntu上double Tab的标准行为是列出PATH的内容:)
dadexix86 2014年

@LorenzoAncora列出任何一个目录的内容都不会在所有可执行命令附近显示。列出所有 PATH目录的内容将不会显示没有相应可执行文件(例如cd)的shell内置文件。两次按Tab键可以克服这两个严重限制。如果有人问过如何在任意GNU / Linux系统上显示所有命令,则可能会争辩说Tab补全不是一种适当的解决方案。当然,将来在Ubuntu中任何事情都可能会发生变化,但是默认的交互式shell中完成制表符的可能性很小。
伊利亚·卡根

2

命令列表在很大程度上取决于您所安装的内容,但是列出所有命令的秘籍也很多。以下内容适用于大多数类似bourne的shell:

  1. Tab两次。
  2. 使用find发现的所有可执行文件:

    find / -perm +x
    
  3. 列出二进制文件目录中的所有文件(可能不完整):

    ls /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin
    

1

打开一个终端窗口(GNOME终端正常,也配置了xTerm)。
您的选择是:

  • 通过按TAB两次键(“-> <-”),您将在控制台中完成任何命令,如果该行为空,则将获得所有可用命令的编号和名称。请注意,这可能需要一些时间,并且可能会列出半管理实用程序。注意:这不是标准,有关“跨外壳”方式,请参阅其他选项。

  • 使用man -k NAME以搜索命令(或它的一部分),并man COMMAND以获得的手册该命令。并非所有命令都有系统手册。使用任何管理实用程序之前先阅读该文档这总是一个好主意;相信我。

  • 使用Midnight Commander(mc)具有一个不错的控制台(诅咒)GUI来管理系统和文件系统。您可能必须从软件包管理器中安装它。不用担心 它是安全且极为通用的软件。
    注意:它用于在您遇到文件系统混乱或困难时使用。

  • 使用ls /bin | more知道所有exential行政可执行文件 ; ls /sbin | more用于常见的行政可执行文件

  • 使用ls /usr/sbin | more知道所有用户的可执行文件 ; ls /usr/sbin | more将提供用户可执行文件和库的巨大清单。
    注意:如果输出的内容more超过一页(全屏显示),则必须按“ Page Up”和“ Page Down”或空格键滚动py。
    您可以COMMAND | grep TEXT用来过滤输出。

如果您还有其他问题,请在此处评论,如果我有帮助,请不要忘记选中答案旁边的勾。
有一个很好的经验。


通常,大多数可执行文件都在中/usr/bin,您在这里没有提到。还有/sbin,其中包含经常用于系统管理的可执行文件,例如usermodifconfig。许多系统还具有其他二进制目录,例如/usr/games/usr/local/bin。请参阅文件系统层次结构标准man 7 hier。您可能需要扩展它,以提及/bin和以外的可执行文件的重要目录/usr/sbin
伊利亚·卡根

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.