有时,当我在终端上输入命令时,终端的自动完成功能不起作用,即使我的命令没有错。
例如,看看这个:sudo service vsftpd status
sudo 和 service 没有任何问题。我的意思是,当你输入南方+tab终端建议您须藤或者我输入服务+tab终端完成服务。但是对于 vsftpd,我没有收到任何建议。有没有办法说“终端,请告诉我任何建议!!?”。
答案1
自动完成功能的运作程度取决于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
。
答案2
当有多个可能的建议时,tab不会产生任何建议。使用tab tab(双击)将产生所有可能建议的列表。
答案3
vsftpd 可能有多个选项。单击tab两次以查看可能性。
例如:li
显示tabtab:
libnetcfg line lintian-info lispmtopgm
libreoffice linguist linux32 listres
lightdm link linux64
lightdm-session lintian linux-boot-prober
答案4
我发现systemctl list-units --full --all
没有列出已禁用的服务,因此自动完成功能不起作用
# check if enabled
systemctl is-enabled <service_name>
# enable
systemctl enable <service_name>