Perché il completamento automatico del terminale a volte non suggerisce nulla per il comando 'servizi'?

16

A volte, quando digito un comando sul terminale, il completamento automatico del terminale non funziona, anche se il mio comando non è sbagliato.

Ad esempio, dai un'occhiata a questo: sudo service vsftpd status sudo e il servizio non hanno alcun problema. Voglio dire, quando digiti sud + scheda terminale ti suggeriamo sudo oppure digito servi + scheda terminale completo che per servizio . Ma per vsftpd non ho alcun suggerimento. C'è un modo per dire, "terminale, per favore mi dica qualche suggerimento !!?".

    
posta Mohammad Reza Rezwani 27.05.2014 - 21:02

5 risposte

28

Il grado di funzionamento del completamento automatico dipende da quanto bene funzionano gli script di shell nel pacchetto bash-completion .

In Ubuntu 14.04, lo script che gestisce i completamenti per service è in /usr/share/bash-completion/bash_completion . Cerca i nomi dei servizi come file in /etc/rc.d/init.d e /etc/init.d e nell'output di systemctl list-units --full --all .

Ma l'installazione del pacchetto vsftpd non inserisce alcun file in /etc/init.d , perché è stato systemd -ified; mette un file di configurazione in /etc/systemd/system/vsftpd.service . systemctl list-units troverà quel file se non per il fatto che Ubuntu, al momento attuale, non include un comando systemctl .

Quindi, al momento, non otterrai i completamenti automatici per service vsftpd , ma lo farai per la maggior parte degli altri servizi, poiché i loro file di configurazione sono in /etc/init.d .

    
risposta data Mark Plotnick 28.05.2014 - 01:38
9

Quando ci sono più suggerimenti possibili, la scheda non produrrà alcun suggerimento. Usando la scheda (doppia scheda) verrà prodotta una lista di tutti i possibili suggerimenti.

    
risposta data dan08 27.05.2014 - 21:16
6

vsftpd ha probabilmente più di 1 opzione. scheda due volte per visualizzare le possibilità.

Esempio: li con la scheda mostra:

libnetcfg          line               lintian-info       lispmtopgm
libreoffice        linguist           linux32            listres
lightdm            link               linux64            
lightdm-session    lintian            linux-boot-prober  
    
risposta data Rinzwind 27.05.2014 - 21:17
4

Puoi crearne uno tuo!

E.g .: metti complete -f -r -c su -d 'Username' -a '(cat /etc/passwd|cut -d : -f 1)' in bash che se hai su e premi tab / tab ti dà tutti gli utenti, sì. Vedi qui

    
risposta data elf12 28.05.2014 - 00:44
0

Ho scoperto che systemctl list-units --full --all non elenca i servizi disabilitati, quindi il completamento automatico non è

# check if enabled
systemctl is-enabled <service_name>
# enable
systemctl enable <service_name>
    
risposta data Lluís 14.02.2016 - 10:12

Leggi altre domande sui tag