在bash中使用命令时,我喜欢double选项卡选项以显示可用命令。一些命令比其他命令具有更多可能的匹配项:
选项卡补全的屏幕快照http://img13.imageshack.us/img13/5541/picturemhy.jpg
有没有办法将double选项卡的输出通过管道传递到somwehere,例如grep
?我找到了相关的帖子,但是我仍然不确定如何实现将其通过管道传递到grep。
在bash中使用命令时,我喜欢double选项卡选项以显示可用命令。一些命令比其他命令具有更多可能的匹配项:
选项卡补全的屏幕快照http://img13.imageshack.us/img13/5541/picturemhy.jpg
有没有办法将double选项卡的输出通过管道传递到somwehere,例如grep
?我找到了相关的帖子,但是我仍然不确定如何实现将其通过管道传递到grep。
Answers:
对于命令,请使用compgen -c
:
$ compgen -c bas
basename
base64
bashbug
bash
basename
base64
bashbug
您可以简单地通过管道输出此输出grep
。
根据@salutis的答案,我创建了一个脚本,该脚本被调用comp
并存储在~/bin/comp
该脚本中,并在其中搜索commands
',' aliases
和' builtins
(选项标志,-cab
请参阅bash man条目),并带有可选的第二个参数(如果存在),该输出将输出传递给grep
并搜索第二个参数。
Usage: comp string [keyword-for-grep]
码:
#!/bin/bash
if [ -z "$1" ]; then
echo usage: comp string [keyword-for-grep]
echo
exit
fi
if [ -z "$2" ]; then
compgen -cab -- $1
exit
fi
compgen -cab -- $1 | grep -i $2
我个人也很想找出一种方法来从脚本的shell历史记录中删除最后一个命令(与相关的内容history -d
),以便在搜索bash
历史记录时不会找到comp
条目。我知道我也可以使用它来执行此操作,HISTIGNORE
但是linux非常强大,因此也必须有一种方法可以从脚本文件中执行此操作-对吗?
为什么不找到您想要的?
例:
find / -name ec2* -executable -type f -perm -og+rx -print
了解您的用例后,我可以创建一个更详细的命令示例。
grep
正则表达式?(y or n or g[rep])
?我讨厌听起来很悲观,但是我怀疑如果不将其添加到bash代码中就可以做到这一点。