Parfois, lorsque je tape une commande sur le terminal, la saisie semi-automatique du terminal ne fonctionne pas, même si ma commande n'est pas erronée.
Par exemple, regardez ceci: Sudo service vsftpd status
Sudo et le service ne rencontrent aucun problème. Je veux dire, quand vous tapez sud +tab terminal vous suggère Sudo ou je tape servi + tab terminal complète cela à service. Mais pour vsftpd, je ne reçois aucune suggestion. Y at-il un moyen de dire, "terminal, s'il vous plaît dites-moi n'importe quelle suggestion !!?".
La mesure dans laquelle l'auto-complétion fonctionne dépend de l'efficacité des scripts Shell dans le package bash-completion
.
Dans Ubuntu 14.04, le script qui gère les complétions pour service
se trouve dans /usr/share/bash-completion/bash_completion
. Il recherche les noms de service sous forme de fichiers dans /etc/rc.d/init.d
et /etc/init.d
et dans la sortie de systemctl list-units --full --all
.
Mais l'installation du paquetage vsftpd
ne place aucun fichier dans /etc/init.d
, car il s'agit de systemd
-ified; il met un fichier de configuration dans /etc/systemd/system/vsftpd.service
. systemctl list-units
trouverait ce fichier sans le fait qu'Ubuntu, à l'heure actuelle, n'inclut pas de commande systemctl
.
Donc, pour le moment, vous ne recevrez pas d'auto-complétions pour service vsftpd
, mais pour la plupart des autres services, car leurs fichiers de configuration sont au format /etc/init.d
.
Quand il y a plusieurs suggestions possibles, tab ne produira aucune suggestion. En utilisant tabtab (double onglet) produira une liste de toutes les suggestions possibles.
vsftpd a probablement plus d'une option. tab deux fois pour voir les possibilités.
Exemple: li
with tabtab spectacles:
libnetcfg line lintian-info lispmtopgm
libreoffice linguist linux32 listres
lightdm link linux64
lightdm-session lintian linux-boot-prober
Vous pouvez construire le vôtre!
Par exemple: mettez complete -f -r -c su -d 'Username' -a '(cat /etc/passwd|cut -d : -f 1)'
dans bash que si vous avez su
et que vous appuyez sur tab/tab, tous les utilisateurs y trouveront leur compte. Voir ici
J'ai constaté que systemctl list-units --full --all
ne répertorie pas les services désactivés, donc l'auto-complétion ne le fait pas.
# check if enabled
systemctl is-enabled <service_name>
# enable
systemctl enable <service_name>