Nasıl sekme tamamlama çalışma bash mu?
Son zamanlarda kabuk çok zaman geçiriyorum ve sekme otomatik tamamlama nasıl çalıştığını merak ediyorum. Arkasındaki mekanizma nedir? Nasıl bash her dizinin içeriğini biliyor mu?
CEVAP
Bu otomatik tamamlama için iki bölümü vardır:
Zaten fixje tarafından belirtildiği gibi atayarak kütüphane, komut satırı düzenleme yönetir ve geri sekme, tamamlanmasını sağlamak için basıldığında bash için çağırır. Bash sonra (bkz: Bir sonraki nokta) Olası tamamlamaları bir listesini verir, ve karakterler tarafından açıkça belirlenmiştir kadar karakter olarak atayarak ekler zaten yazmış. (Atayarak kütüphane oldukça fazla bilgi için Bash Kullanma Kılavuzu Bölüm Command line editing bakın yapılandırabilirsiniz.)
Bina
complete
tamamlama mekanizması tanımlamak için tek tek komutları için kendisi Bash. Eğer geçerli bir komut için bir şey tanımlanmışsa, dosya adı tamamlama (Ignacio dediği gibi/readdir, opendir kullanarak) kullanılır.Kendi tamamlamaları tanımlamak için bölüm bölümünde Programmable Completion açıklanmıştır. Kısacası, ile
complete «options» «command»
bazı komut tamamlanması için tanımlayın. Örneğincomplete -u su
diyorsu
komut için bir argüman tamamlarken, mevcut sistem kullanıcıları için arayın.Eğer bu daha karmaşık ise can kapak (farklı tamamlanmış bağımsız değişken ındex bağlı olarak, örneğin,ya da önceki değişkenlere bağlı olarak) normal seçenekleri o zaman mümkün olan tamamlamalar listesini oluşturmak için bir kabuk işlevi çağırmak
-F function
, kullanabilirsiniz. (Bu çok karmaşık, etkileşimli bağlı olan gıt tamamlanması için örneğin bazen kullanılır seçenekleri göz önüne alındığında, ve kullanarak bazen dalları isimleri bash bilmediği bir şey vardır.
Mevcut tamamlamaları geçerli bash ortamınız sadece complete
kullanılarak tanımlanan Olası ne olduğu konusunda bir izlenim var listeleyebilirsiniz. Eğer bash-completion paketi yüklü (veya ancak adı üzerinde sistem), tamamlamaları için bir sürü komutlar yüklü olarak Wrikken dedi, /etc/bash_completion içeren bir bash komut dosyası daha sonra sık sık idam shell başlangıç için yapılandırma bu. Ek özel tamamlama komut/bash_completion /etc yerleştirilebilir.d; O /bash_completion/etc kaynaklıdır.
Nasıl vim normal (bash gibi) dosya isi...
Nasıl diğer adları ile çalışmak için b...
Nasıl Python shell için SEKME tamamlam...
Nasıl son tamamlama Geri Al mı?...
Nasıl web tarayıcı otomatik tamamlama ...