将制表符补全可能性保存到文件中

将制表符补全可能性保存到文件中

而不是在终端屏幕上显示所有可能性,如下所示:

$ ls /etc/<TAB>
Display all 230 possibilities? (y or n)

我想将所有可能性保存到一个文件中。

ls /etc/ > file.txt并不总是有效。 apt-get 是一个例子:

$ apt-get <TAB>
autoclean        check            install          update
autoremove       clean            purge            upgrade
build-dep        dist-upgrade     remove           
changelog        dselect-upgrade  source           

我正在寻找一个类似tabcompletions 'ls /etc/'输出所有可能性的命令,以便我可以运行如下命令,该命令比较两个命令的选项卡完成可能性:

diff <(tabcompletions 'ls ') <(tabcompletions 'cd ')

那可能吗?

答案1

在你的~/.bashrc你可能有这样的东西:

if [ -f /etc/bash_completion ] && ! shopt -oq posix
then
    source /etc/bash_completion
fi

现在,这是继续查找的地方,并且 的标题_quote_readline_by_ref包含必要的提示:

compgen -f /etc/

追溯这一点,事实证明(通过type compgen) compgen 是一个“shell 内置函数”,这意味着它应该出现在man bash

compgen [option] [word]
       Generate possible completion matches for word according to the options ...

答案2

虽然这是一种粗略的方法,但您可以使用命令script

$ script -a lsdiff
Script started, file is lsdiff
$ ls <TAB>
a b c ...
$ <Ctrl-D>
Script done, file is lsdiff

重复上述操作cd并比较差异。

答案3

对于ls /etc/<TAB>自动完成的情况,请执行以下操作:

# print to screen
compgen -f /etc/ | sort
# store to file
compgen -f /etc/ | sort > output.txt
# print to screen *and* store to file
compgen -f /etc/ | sort | tee output.txt

请参阅help compgen获取更多信息。compgen显然代表“完成生成器”。

另请参阅man bash并搜索compgen,因为它是 bash 中内置的内置可执行文件。man bash有一个很多有关该命令的更多信息compgen

例如:compgen -A command <cmd>与 相同compgen -c <cmd>,并且compgen -A file与 相同compgen -f。搜索。man bash-A action

也可以看看:

  1. 列出所有二进制文件$PATH
  2. 如何通过“选项卡完成”显示的命令列表进行管道传输?

相关内容