了解`compgen`内置命令


36

来自help compgen

$ help compgen
compgen: compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat] [-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
    Display possible completions depending on the options.

    Intended to be used from within a shell function generating possible
    completions.  If the optional WORD argument is supplied, matches against
    WORD are generated.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

那么,期权[-abcdefgjksuv]代表什么呢?

换句话说,我想知道如何使用所有选项。


你看过手册页吗?man compgen。手册页是针对shell内置程序的,因此您必须向下滚动到compgen
garethTheRed 2014年

5
“ man compgen”不存在。使用“ man bash”
kevinf

Answers:


38

对于选项compgen命令是一样的complete,除了-p-r。从compgen手册页:

compgen
 compgen [option] [word]
 Generate possible completion matches for word according to the options, which 
 may be any option accepted by the complete builtin with the exception of -p 
 and -r, and write the matches to the standard output

对于选项[abcdefgjksuv]

  • -a 表示别名
  • -b 表示shell内置名称
  • -c 表示所有命令的名称
  • -d 表示目录名称
  • -e 表示导出的shell变量的名称
  • -f 表示文件和功能的名称
  • -g 表示组名
  • -j 表示工作名称
  • -k 表示Shell保留字的名称
  • -s 表示服务名称
  • -u 表示userAlias名称的名称
  • -v 表示shell变量的名称

您可以在此处看到完整的手册页。


@Pandya:为见选项complete,这是一样的compgen,除了-p-r
cuonglm

我已阅读man bash并建议编辑以完成您的帖子,以便我轻松接受。
2014年

1
有关如何使用的任何信息compgen -G?说我的模式是,compgen -G '*.zip'并且我有文件“ foo.zip”。compgen将找到foo.zip,但是如果用户已经键入'b'会怎样。现在,compgen应该什么也找不到。如果我给出命令compgen -G '*.zip' "b",compgen仍然会找到foo.zip
Edward Falk

@cuonglm如何列出service命令提供的功能?例如,使用service networking并点击标签将返回force-reload reload restart start stop。你知道如何让那些人使用compgen吗?
伊利亚·罗斯托夫采夫

@IliaRostovtsev:请参阅此示例github.com/scop/bash-completion/blob/…–
cuonglm
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.