Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确编写能够利用bash';s自动完成机制_Bash_Autocomplete_Interactive_Interactive Shell - Fatal编程技术网

如何正确编写能够利用bash';s自动完成机制

如何正确编写能够利用bash';s自动完成机制,bash,autocomplete,interactive,interactive-shell,Bash,Autocomplete,Interactive,Interactive Shell,(请帮助我调整标题和标签。) 当我运行connmanctl时,会得到不同的提示 enrico:~$ connmanctl connmanctl> 并且可以使用不同的命令,如服务,技术,连接 我想知道这东西是怎么工作的 我知道,一般来说,更改提示符只需更改变量PS1。但是,仅此一点(阅读“命令connmanctl更改PS1并返回)对命令行的功能没有任何影响(我仍然处于相同的bash过程中) 事实上,在我看来,可用命令被更改的事实似乎证明了connmanctl在提示符为connmanctl>

(请帮助我调整标题和标签。)

当我运行
connmanctl
时,会得到不同的提示

enrico:~$ connmanctl
connmanctl>
并且可以使用不同的命令,如
服务
技术
连接

我想知道这东西是怎么工作的

我知道,一般来说,更改提示符只需更改变量
PS1
。但是,仅此一点(阅读“命令
connmanctl
更改
PS1
并返回)对命令行的功能没有任何影响(我仍然处于相同的
bash
过程中)

事实上,在我看来,可用命令被更改的事实似乎证明了
connmanctl
在提示符为
connmanctl>
的所有时间都在运行,并且在运行
connmanctl
时,一个
while
循环被输入,其中包含一条
read
语句,然后是一组命令,这些命令在访问输入

在我想象的后一个场景中,甚至不需要更改
PS1
,因为
connmantl>
行可以通过
echo-n“connmantl>”
获得


这种好奇背后的原因是,我正在尝试为
connmantl
编写一个包装器。我已经编写了它,它可以按预期工作,只是我不知道如何正确设置自动完成功能,我认为为了做到这一点,我首先需要了解编写交互式shell脚本的正确方法是什么。

当您在交互式终端中启动
connmantl
而不带参数时,
connmantl
从终端读取其命令。它正在运行,而不是
bash
。当您带参数运行它时,它使用其命令行参数解释单个命令,然后返回bash。好的,@rici,这正是我的意思t当我编写
connmanctl
时,提示一直在运行
connmanctl>
。感谢您确认这一点。当您在交互式终端中无参数启动
connmanctl
时,
connmanctl
从终端读取其命令。它正在运行,而不是
bash
。当您带参数运行它时,它使用其命令行参数解释单个命令,然后返回bash。好的,@rici,这正是我在编写
connmanctl
时所说的意思,提示一直在运行
connmanctl>
。感谢您确认这一点。