Neden terminal otomatik tamamlama bazen `services 'komutu için bir şey önermiyor?


17

Bazen, terminalde bir komut yazdığımda, komutum yanlış olmasa bile terminalin otomatik tamamlama özelliği çalışmıyor.

Örneğin, şuna bakın: sudo service vsftpd statussudo ve service'de herhangi bir sorun yok. Siz yazarken Yani, sud + tabönerdiğiniz terminali sudo yoksa yazın servi + tabo terminali yansıtan komple hizmet . Ama vsftpd için herhangi bir öneri almıyorum. "Terminal, lütfen bana herhangi bir öneri söyle !!" demenin bir yolu var mı?

Yanıtlar:


28

Otomatik tamamlamanın çalışma derecesi, bash-completionpaketteki kabuk komut dosyalarının ne kadar iyi çalıştığının bir işlevidir .

İçin Ubuntu 14.04, komut o kolları tamamlamaları serviceiçindedir /usr/share/bash-completion/bash_completion. Hizmet adlarını, dosyalarının içinde /etc/rc.d/init.dve /etc/init.dçıktısında dosyalar olarak arar systemctl list-units --full --all.

Ancak vsftpdpaketin yüklenmesi herhangi bir dosya koymaz /etc/init.d, çünkü - systemdbelirtilmiştir; bir yapılandırma dosyası koyar /etc/systemd/system/vsftpd.service. systemctl list-unitsşu anda Ubuntu'nun bir systemctlkomut içermediği gerçeği olmasaydı bu dosyayı bulurdu .

Yani, şu anda için otomatik tamamlamalar service vsftpdalmayacaksınız, ancak yapılandırma dosyaları olduğu için diğer birçok hizmet için alacaksınız /etc/init.d.


Bu yanıtı bulanlar için: Tamamlama bulma hizmetleri (ve bulma / ayrıştırma süresi) her zaman 14.xx, 16.xx 18.xx altında bir sorun olmuştur: İyi örnek: sudo systemctl (durum veya durdurma) lightd(SEKME / Çift SEKME) ( Yüklü olduğunuzu varsayarak tam 'lightdm.service' anlamına gelir - etkin / çalışıyor ya da çalışmıyor) Bu svc hem birim çıktısında hem /etc/init.dde makinemde. Aynı sorunu diğer hizmetlerde de buldum. Ayrıca tamamlamalarda uzun zaman alan bir hata (?) Vardır. Bana bip sesi çıkmadan önce 10+ saniye oturup gördüm / bulunamadı. github.com/systemd/systemd/issues/7185
bshea

9

Birden fazla olası öneri olduğunda, tabherhangi bir öneri üretmez. Kullanılması tab tab(çift sekme) tüm olası öneri listesi üretecektir.


Ben kullandım: tab + tab vsftpd için çalışmıyor. Siz ve Rinzwind'in önerisi örneğin su + tab + tab. Ancak vsftpd için çalışmıyor.
Mohammad Reza Rezwani

sudo apt-get install vsftpd ile ilk küçük kurulum vsftpd programını test edebilir ve sonra sekme + sekmeyi deneyebilirsiniz
Mohammad Reza Rezwani

2
tab + tab parametrelerde çalışmaz. İçinde sudo service vsftpd status, vsftpd bir hizmet parametresidir ve bu nedenle çift sekmeli bulunmaz. OP bu noktada doğrudur.
Jos

2
@Jos Ama diğer hizmetler gibi apache2ve networkingotomatik tamamlama. Nasıl farklılar?
Dan

@ dan08 Düzeltildim. Ayrıca, sudo service networking tab tabsunacak force-reload reload restart start stop. Bu yüzden düşündüğümden daha iyi çalışıyor.
Jos

6

vsftpd muhtemelen 1'den fazla seçeneğe sahiptir. tabolasılıkları görüntülemek için iki kez.

Örnek: liile tabtabgösterir:

libnetcfg          line               lintian-info       lispmtopgm
libreoffice        linguist           linux32            listres
lightdm            link               linux64            
lightdm-session    lintian            linux-boot-prober  

4

Kendiniz oluşturabilirsiniz!

Örn: complete -f -r -c su -d 'Username' -a '(cat /etc/passwd|cut -d : -f 1)'sahip olduğunuzdan daha fazla bash koyun suve tab / tab tuşuna basın, size tüm kullanıcıları verir, evet. Buraya bakın


0

systemctl list-units --full --allDevre dışı bırakılan hizmetleri listelemediğini gördüm , bu nedenle otomatik tamamlama

# check if enabled
systemctl is-enabled <service_name>
# enable
systemctl enable <service_name>

0

Services komutu "systemctl list-units --full --all" dizinine dayanır ve başlatılamayan (veya yukarıdaki gibi devre dışı bırakılan) hizmetleri listelemez; bu sorunu yaşayıp yaşamadığınızı doğrulamak için

systemctl status <service_name>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.