为什么终端自动完成有时不会为`services` 命令提供任何建议?

Moh*_*ani 18 bash auto-completion vsftpd

有时,当我在终端上键入命令时,终端的自动完成功能不起作用,即使我的命令没有错。

例如,看看这个:sudo service vsftpd statussudo 和 service 没有任何问题。我的意思是,当你输入sud + tabterminal 建议你sudo或者我输入servi + tabterminal 完成它来service。但是对于 vsftpd 我没有得到任何建议。有没有办法说,“终端,请告诉我任何建议!!?”。

Mar*_*ick 31

自动完成的工作程度取决于bash-completion包中的 shell 脚本的工作情况。

在 Ubuntu 14.04 中,处理完成的脚本service/usr/share/bash-completion/bash_completion. 它在/etc/rc.d/init.d和 中寻找服务名称作为文件/etc/init.d,并在systemctl list-units --full --all.

但是安装vsftpd包并没有将任何文件放入 中/etc/init.d,因为它已被systemd-ified;它把一个配置文件放在/etc/systemd/system/vsftpd.service. systemctl list-units如果不是因为 Ubuntu 目前不包含systemctl命令,它会找到该文件。

所以,此刻,你不会得到自动填充的service vsftpd,但你会为大多数其他服务,因为他们的配置文件都在/etc/init.d


Dan*_*Dan 10

当有多个可能的建议时,tab不会产生任何建议。使用tab tab(double tab) 将生成所有可能建议的列表。

  • tab+tab 在参数的情况下不起作用。在 `sudo service vsftpd status` 中,vsftpd 是服务的一个参数,因此不会用双选项卡找到。OP 在这一点上是正确的。 (2认同)
  • @Jos 但其他服务,如 `apache2` 和 `networking` 自动完成。它们有何不同? (2认同)

Rin*_*ind 6

vsftpd 可能有 1 个以上的选项。tab两次查看可能性。

示例:litabtab显示:

libnetcfg          line               lintian-info       lispmtopgm
libreoffice        linguist           linux32            listres
lightdm            link               linux64            
lightdm-session    lintian            linux-boot-prober  
Run Code Online (Sandbox Code Playgroud)