在这种情况下,有没有办法通过Tab按钮进行bash完成?

时间:2013-05-25 16:57:03

标签: bash bash-completion

有一种方法可以像这样在bash中运行命令:

echo ls | bash

我需要对bash完成进行单元测试,如果有一种方法可以通过这种方式将按键传递到Tab以完成命令,我就会很糟糕,如下所示:

# This doesn't work, but I think you get the idea
echo chromi$'\t' | bash

这可能吗?或者你可以建议另一种单元测试bash完成的方法吗?

2 个答案:

答案 0 :(得分:5)

查看compgen,这是一个内置命令,可让您按照与bash相同的方式生成完成匹配。

$ compgen -c unam
uname

或者,使用-i以交互模式运行bash。然后它将执行 Tab - 完成。

$ bash -i <<< $'unam\t'
$ bash -i <<< $'unam\t'
$ uname 
Darwin
$ exit

答案 1 :(得分:3)

$ printf 'makeinf\t' | bash --norc -i
[user@host ~]$ makeinfo
[user@host ~]$ exit

在这里工作。如果您不需要提示,请设置PS1

$ printf 'makeinf\t' | PS1='' bash --norc -i
makeinfo
exit