有一种方法可以像这样在 bash 中运行命令:
echo ls | bash
我需要对 bash 完成进行单元测试,如果有办法以这种方式将按下传递给 Tab 以完成命令,我很好奇,如下所示:
# This doesn't work, but I think you get the idea
echo chromi$'\t' | bash
那可能吗?或者,也许您可以建议另一种对 bash 完成进行单元测试的方法?
有一种方法可以像这样在 bash 中运行命令:
echo ls | bash
我需要对 bash 完成进行单元测试,如果有办法以这种方式将按下传递给 Tab 以完成命令,我很好奇,如下所示:
# This doesn't work, but I think you get the idea
echo chromi$'\t' | bash
那可能吗?或者,也许您可以建议另一种对 bash 完成进行单元测试的方法?
看一下compgen
,一个内置命令,它可以让您生成完成匹配,就像 bash 一样。
$ compgen -c unam
uname
或者,在交互模式下运行 bash 与-i
. 然后它将执行Tab-completion。
$ bash -i <<< $'unam\t'
$ bash -i <<< $'unam\t'
$ uname
Darwin
$ exit
$ printf 'makeinf\t' | bash --norc -i
[user@host ~]$ makeinfo
[user@host ~]$ exit
在这里工作。PS1
如果您不需要提示,也请设置:
$ printf 'makeinf\t' | PS1='' bash --norc -i
makeinfo
exit