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

gvl*_*sov 3 bash bash-completion

有一种方法可以在bash中运行命令,如下所示:

echo ls | bash
Run Code Online (Sandbox Code Playgroud)

我需要对bash完成进行单元测试,如果有一种方法可以通过这种方式将按钮传递给Tab以完成命令,那我就很烦人了,如下所示:

# This doesn't work, but I think you get the idea
echo chromi$'\t' | bash
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*ica 5

看一下compgen内置命令,它可以让你以与bash相同的方式生成完成匹配.

$ compgen -c unam
uname
Run Code Online (Sandbox Code Playgroud)

或者,以交互模式运行bash -i.然后它将执行Tab-completion.

$ bash -i <<< $'unam\t'
$ bash -i <<< $'unam\t'
$ uname 
Darwin
$ exit
Run Code Online (Sandbox Code Playgroud)