如何重定向命令完成输出?


25

在命令行上,我可以使用命令后的>or |运算符将命令的输出重定向或通过管道传递到文件或其他命令。我遇到了一种不太标准的情况,我想将输出重定向到文件,但是似乎没有重定向的机会:

在新航站楼,

[chiliNUT ~]$

如果我Tab没有先输入就按,我会被问到

display all 1725 possibilities? (y or n)

如果输入y,我会得到一长串不同的命令。如何将输出重定向或通过管道传输到文件?我似乎没有机会在> myfile.txt任何地方打字。

使用CentOS版本6.4(最终版)

Answers:


26

您可以利用内建函数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.

TAB在提示符下将列出命令,shell内置函数,关键字,别名和函数。所以你可以说:

compgen -cbka -A function | grep '^y' > myfile.txt

以获取yTAB在shell提示符下键入文件时看到的所有选项myfile.txt

消除grep管道,以便将所有可能的命令,函数,...放入文件中:

compgen -cbka -A function > myfile.txt

1
太棒了!您所写的答案实际上只是抓取以字母y开头的命令/文件,因此只compgen -cbka -A function > myfile.txt抓取完整的输出。谢谢!我(显然)从来不知道这个新的有趣功能。
chiliNUT 2014年

哦,那很聪明。
Hauke Laging

@chiliNUT我确实提到过,该命令将以y:: 开头。这与您在问题中所显示的非常一致!
devnull 2014年

哦,哈,有点误会了。我的问题中的“ y”实际上对应于“是”与“否”;我输入“ y”,它吐出所有这些命令,我​​输入“ n”,它不输出任何东西。
chiliNUT 2014年

2
@chiliNUT我也更新了答案以反映这一点。
devnull 2014年
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.