Son zamanlarda kabukta çok fazla zaman harcadım ve sekmenin otomatik tamamlamasının nasıl çalıştığını merak ediyorum. Arkasındaki mekanizma nedir? Bash her dizinin içeriğini nasıl biliyor?Bash sekmesi tamamlanması nasıl çalışır?
cevap
:
taleb kütüphane, zaten fixje tarafından belirtildiği gibi, komut satırı düzenleme yönetir, ve tamamlanabilmesi için sekmeye basıldığında bash'a geri çağrılır. Bash daha sonra olası tamamlamaların bir listesini verir (bir sonraki noktaya bakın) ve readline zaten yazılan karakterlerin belirsiz bir şekilde tanımlandığı kadar çok karakter ekler. (Readline kütüphanesini oldukça fazla yapılandırabilirsiniz, Bash kılavuzunun Command line editing bölümüne bakın. Ayrıntılar.) Ayrı komutlar için bir tamamlama mekanizması tanımlamak üzere Bash'in kendisi,
complete
numaralı yapıya sahiptir. Mevcut komut için hiçbir şey tanımlanmamışsa, dosya ismine göre tamamlandı (Ignacio'nun dediği gibi opendir/readdir kullanarak).Kendi tamamlamalarınızı tanımlayan bölüm, Programmable Completion bölümünde açıklanmıştır. Kısacası,
complete «options» «command»
ile bir komut için tamamlamayı tanımlarsınız. Örneğincomplete -u su
,su
komutu için bir argümanı tamamlarken diyor, geçerli sistem kullanıcıları için.bu Normal seçenekler listesini oluşturmak için daha sonra bir kabuk işlevi çağırmak olacaktır
-F function
kullanabilirsiniz, (argüman endeksi bağlı olarak veya önceki argümanlar bağlı mesela farklı tamamlamaları) anlatabileceğiniz daha karmaşıktır ise olası tamamlamalar. (Bu alt komutuyla bağlı ve bazen seçenekleri verilen ve bazen hiçbir şey bash) bilir olan dalların adları (kullanarak, çok karmaşık git tamamlanması için örneğin kullanılır.
You Mevcut bash ortamınızda tanımlanan mevcut tamamlamaları, sadece complete
kullanarak nelerin mümkün olduğuna dair bir izlenime sahip olarak listeleyebilir.Talh tamamlama paketini yüklediyseniz (veya sisteminizde adlandırılmışsa), çok sayıda komut için tamamlamalar yüklü ve Wrikken'in dediği gibi,/etc/bash_completion, bunu yapılandırmak için çoğunlukla kabuk başlangıcında çalıştırılan bir bash komut dosyası içerir. Ek özel tamamlama komut dosyaları /etc/bash_completion.d dizinine yerleştirilebilir. Hepsi/etc/bash_completion kaynaklıdır.
Temel bilgiler: Bash, tarih ve temel tamamlama özelliklerini içeren readline kullanır. Ayrıntılı bir anlayış edinmek istiyorsanız kaynağı inceleyebilirsiniz. Ayrıca, tamamlama ile kendi CLI arabirimleri oluşturmak için readline kullanabilirsiniz
otomatik tamamlanması için iki bölümü vardır- 1. Bash parametre genişletmesi nasıl çalışır?
- 2. Git bash sekmesi tamamlandı .sh dosyaları için
- 3. uhuntu ile bash sekmesi tamamlama sorunları 12.04
- 4. ipython'da tam sözlük tuşları sekmesi
- 5. Bağlantı sekmesi ile bağlantı sekmesi
- 6. IntelliJ kodunun tamamlanması: ⇥ tuşu?
- 7. nasıl sekme tamamlanması sırasında .DS_Store dosyaları görmezden OS X Lion bash alabilirim?
- 8. Windows cmd sekmesi, dizin adlarına bir son eğik çizgi eklemek için tamam nasıl zorlanır
- 9. io.popen - Lua'da işlemin tamamlanması nasıl beklenir?
- 10. Akka.Net'te tüm işlerin tamamlanması için nasıl beklerim?
- 11. Komut satırı programının tamamlanması için nasıl bekleyebilirim?
- 12. QTabWidget sekmesi çubuğunu nasıl genişletirim?
- 13. Chrome sekmesi kilitleniyorsa nasıl algılanır
- 14. bash
- 15. Tam olarak nasıl çalışır?() {}() Çalışır?
- 16. Git sekmesi tamamlanma zsh'de çalışmaz
- 17. Silverlight TextBox'ta yakalama sekmesi
- 18. Bash
- 19. bash komut kabuğundan çalışır ancak cron işi dan
- 20. Python: harici başlatılan işlemin tamamlanması bekleniyor
- 21. Bash
- 22. Parlak sekmesi panelleri değiştirirken
- 23. Pencerelerde python sekmesi tamamlandı
- 24. bash
- 25. BASH
- 26. Outlook 2010 AddIn TabAppointment Sekmesi
- 27. Bash
- 28. bash pipestatus? Bash içinde
- 29. Bash
- 30. bash,
'/ etc/bash_completion' kontrol etmek isteyebilirsiniz (en azından sihirin birçoğu Debian'da olduğu yerdir). – Wrikken
@Wrikken: Bu sekme tamamlanmasına bağlı olan bash_completion, ancak tam olarak nasıl değil. –
Ayrıca dahil olmak üzere * nix stackexchange ile ilgili birkaç soru vardır: http://unix.stackexchange.com/questions/4738/an-easy-bash-completion-tutorial http://unix.stackexchange.com/questions/1800/custom-autocomplete http://unix.stackexchange.com/questions/12356/how-does-tab-auto-complete-find-options-to-complete ve SU'daki en az bir tane: http://superuser.com/ sorular/289539/özel bash-tab tamamlama – Cascabel