粘贴以制表符开头的 Bash 命令时完成

luc*_*svc 3 bash command-line readline autocomplete tab-completion

我正在写一个Dockerfile我正在使用选项卡(我通常在任何地方都使用)进行格式化的文件。

但是我复制了一个多行命令,其中第二行以两个制表符开头,即:

apt-get -y update && \
    apt-get -y install collectd \ # begin two tabs
Run Code Online (Sandbox Code Playgroud)

第一行正确执行,但第二行尝试“自动完成”,显示所有可能的命令,然后:

> stall collectd
# [ apt-get updating ]
bash: stall: command not found
Run Code Online (Sandbox Code Playgroud)

我了解“自动完成”行为,但是stall collectd?为什么 Bash 会吃掉这apt-get -y in部分?

cha*_*aos 5

您可以禁用bash按下tab键时的完成行为:

bind 'set disable-completion on'
Run Code Online (Sandbox Code Playgroud)

现在,tab键只是在编辑器中缩进该行。这只是暂时的。在下一个 shell 会话中它没有被设置。如果你想让它永久添加到你的~/.inputrc.

要重新启用tab密钥使用:

bind 'set disable-completion off'
Run Code Online (Sandbox Code Playgroud)