Debian - apt (apt-get değil) otomatik tamamlama çalışmıyor


20

Debian Jessie 8.6'dayım. Ben apt-getpaketler ve komut için sekme basarken beklenen bash otomatik tamamlama alır, ancak onunla kullanmaya çalışırken aptişe yaramaz fark ettim . Çalıştığı yerde xubuntu 16.04 kullandığımı hatırlıyorum, bu yüzden burada çalışmadığını garip buluyorum. Komut için de etkinleştirmenin bir yolu var mı apt? Öyleyse nasıl?


Sizin için bir şey oldu mu?
Lynob

@Lynob Ubuntu'ya taşındım, bu yüzden sana yardım edemem, özür dilerim.
Andrea

Yanıtlar:


19

Debian 'bash-completion' kurulu ve etkinleştirilmiş olarak gelmez.

Bunu düzeltmek için (root olarak) çalıştırın:

apt-get install bash-completion

Sonra iki seçeneğiniz var. (1) Kendiniz için kullanıcı bazında etkinleştirebilir veya (2) global olarak etkinleştirebilirsiniz.

  1. Yalnızca kullanıcılarınız için etkinleştirmek istiyorsanız düzenleyin ~/.bashrc- aşağıdakileri ekleyin:

    if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
    fi
    

    Oturumu kapatıp tekrar açmadan denemek için şunu çalıştırın:

    . ~/.bashrc
    

    Veya yeni bir kabuk açın. Ardından apt ile sekme tamamlamayı kullanmayı deneyin. ( .) Başındaki nokta ve boşluk , sourceanahtar kelimeyi bash ile kullanmakla aynıdır , ancak daha taşınabilirdir.

    suKök hesabındayken çalışmasını istiyorsanız , kökün ana dizininde de (genellikle /root) aynı işlemi yapın.

  2. Genel olarak etkinleştirmek için dosyadaki (1) 'den değişiklikleri yapın /etc/bash.bashrc.

Bu eserler, neden merak herkese .önünde /etc/bash_completionyok olup bunun etrafında boşluk olduğundan, geçerli dizine bakın. Bunun yerine, verilen dosyanın içeriğini yeni bir alt kabukta yürütmek yerine o anda çalışan kabukta değerlendirir. Burada standartlaştırılmıştır.

Bash'te bu .komutla değiştirilebilir source, ancak bu POSIX tarafından standartlaştırılmamıştır ve daha az taşınabilirdir, bu yüzden insanları onu kullanmaktan uzak tutmaya eğilimliyim. Bu durumda, özellikle bir bourne kabuğunda çalışması gereken bir şeyden ziyade bash'ı genişletmek için bir program olduğundan veya okunabilirlik kshyerine sourcegeçmekte özgür hissedebilirsiniz .


2
Bu adımları zaten yaptım, ama bu yardımcı olmadı. Sadece apt-get ile çalışır, ancak apt çalışmaz.
Andrea

@Andrea Oh, üzgünüm, sorunuzu tam olarak okumadım sanırım. Şu anda Debian kutumda değilim (pencerelerde maalesef tek şey cygwin, maalesef), ama eve döndüğümde debian makinemden anlamaya çalışacağım.
Wyatt8740

6

Debian 9 Stretch'te /etc/bash.bashrc dosyasını düzenleyin ve şu önerileri kaldırın:

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

3

Ubuntu: / usr / share / bash-completion / completions / apt adresinden bu yapılandırma dosyasını Jessie içindeki aynı dizine kopyalayın. Dosyayı buradan da alabilirsiniz: http://pastebin.com/PRBMt3an


Buna ihtiyacım var. Ancak otomatik tamamlama apt için çalışmıyor, kopyalandıktan sonra indirilen apt dosyasını / usr / share / bash-completion / completions / olarak yeniden adlandırdı. Nasıl çalıştırılır?
klor

Pastebin.com/PRBMt3an dosyası, iş vermedi, işte bu yüzden, Windows CR LF satır besleme yapıldı. Hat formatını Unix LF hat beslemesine dönüştürmek zorunda kaldım, bu yüzden yeni bir terminal başlattıktan sonra çalıştım.
klor

İşte doğru satır besleme ile 'apt' dosyası: filedropper.com/apt_1
klor

1

Nasıl çözdüm

Ben otomatik tamamlamak için çalışıyor oto tamamlama sorunları vardı wgetile apt-get install wg[TAB][TAB]ve ben kaldırarak bunu çözmek başardı --no-generatealtında sinekler gelen parametreyi:

/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get

Bu dosyaların yalnızca yüklendikten sonra kullanılabilir olduğunu belirtmek gerekir bash-completion.

Bahsettiğim --no-generateparametre aşağıdaki satırda görülebilir, ancak TÜM'ü --no-generateyalnızca bu satırdan değil, kaldırdım : https://github.com/scop/bash-completion/blob/master/completions/apt-get# L28

Bu noktaya nasıl geldim?

Daha set -vönce çalıştırdıktan sonra çalıştırılan apt-get install wg[TAB][TAB]komutun olduğunu gösteren bu noktaya var :

apt-cache --no-generate pkgnames wg

ve çıktı bir hataydı:

E: Could not open file  - open (2: No such file or directory)

Ben apt-cache pkgnames wgolmadan yürüttüğümde --no-generateotomatik tamamlama listesini doğru şekilde aldım:

root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev

Bu yardımcı olur umarım.


That was tam ihtiyacım olan şey. Teşekkürler: D
Ceisc

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.