¿Por qué la terminal autocompletada a veces no sugiere nada para el comando 'services'?

16

A veces, cuando escribo un comando en el terminal, el autocompletado del terminal no funciona, incluso si mi comando no está mal.

Por ejemplo, observe esto: sudo service vsftpd status sudo y servicio no tienen ningún problema. Quiero decir, cuando escribes sud + pestaña terminal te sugiero sudo o escribo servi + pestaña El terminal completa eso para servicio . Pero para vsftpd no recibo ninguna sugerencia. ¿Hay alguna manera de decir "terminal, por favor díganme cualquier sugerencia?".

    
pregunta Mohammad Reza Rezwani 27.05.2014 - 19:02

5 respuestas

28

El grado en que funciona la autocompletación es una función de qué tan bien funcionan los scripts de shell en el paquete bash-completion .

En Ubuntu 14.04, el script que maneja las terminaciones para service está en /usr/share/bash-completion/bash_completion . Busca nombres de servicio como archivos en /etc/rc.d/init.d y /etc/init.d , y en la salida de systemctl list-units --full --all .

Pero instalar el paquete vsftpd no coloca ningún archivo en /etc/init.d , porque ha sido systemd -ified; pone un archivo de configuración en /etc/systemd/system/vsftpd.service . systemctl list-units buscaría ese archivo si no fuera por el hecho de que Ubuntu, en este momento, no incluye un comando systemctl .

Por lo tanto, en este momento, no obtendrá autocompletaciones para service vsftpd , pero lo hará para la mayoría de los demás servicios, ya que sus archivos de configuración están en /etc/init.d .

    
respondido por el Mark Plotnick 27.05.2014 - 23:38
9

Cuando hay múltiples sugerencias posibles, la pestaña no generará ninguna sugerencia. El uso de la pestaña pestaña (doble pestaña) generará una lista de todas las sugerencias posibles.

    
respondido por el dan08 27.05.2014 - 19:16
6

vsftpd tiene probablemente más de 1 opción. pestaña dos veces para ver las posibilidades.

Ejemplo: li con la pestaña pestaña muestra:

libnetcfg          line               lintian-info       lispmtopgm
libreoffice        linguist           linux32            listres
lightdm            link               linux64            
lightdm-session    lintian            linux-boot-prober  
    
respondido por el Rinzwind 27.05.2014 - 19:17
4

¡Puedes construir el tuyo!

P.g .: pon complete -f -r -c su -d 'Username' -a '(cat /etc/passwd|cut -d : -f 1)' en bash que si tienes su y presiona tab / tab que te da a todos los usuarios, sí. Ver aquí

    
respondido por el elf12 27.05.2014 - 22:44
0

Descubrí que systemctl list-units --full --all no muestra los servicios deshabilitados, por lo que la autocompletación no lo hace

# check if enabled
systemctl is-enabled <service_name>
# enable
systemctl enable <service_name>
    
respondido por el Lluís 14.02.2016 - 09:12

Lea otras preguntas en las etiquetas