而不是在终端屏幕上显示所有可能性,如下所示:
$ 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