Birkaç dosya / dizin olduğunda terminal otomatik tamamlama nasıl yapılır?


32

Birkaç dizin varsa, şöyle:

afoo abar

bazen terminalim sekmeye bastığımda otomatik tamamlamayı reddeder (örneğin "cd a" sonra sekme) ve bunun yerine dizin listesini yazdırır. Bazen gürültülü, sinir bozucu bir ses bile çıkarır. Böyle durumlarda otomatik olarak nasıl tamamlanabileceği hakkında bir fikrin var mı? Örneğin önce abar gösterebilir, sonra tekrar sekmeye basarsam afoo gösterebilir. Bu pencerelerde, Ubuntu’da da bazı uygulamalarda gördüm

Yanıtlar:


46

Benim için hayat kurtarıcı bir şey, aptal bir liste göstermek yerine, olasılıklar arasında bash döngüsüne sahip olmak.

Bash readlineotomatik tamamlama işlemi için kullandığından , aşağıdaki satırları~/.inputrc

Eğer şüpheniz yoksa ve iyice birkaç gün / hafta süreyle çözümü aşağıda test ettikten sonra kesme ve yapıştırma (copy yok!) Den aynı ayarları ~/.inputrciçin /etc/inputrcsistem genelinde ayarları içerir ki, sisteminizdeki tüm kullanıcılara bu kullanılabilir hale (misafir dahil).

Codez:

# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: 
"\e[C": forward-char
"\e[D": backward-char

# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward

sonra exitterminaliniz (ya da macun gibi uzaktaki terminal) ve tekrar açın ...

Örnekler:

  1. Ne zaman 3 dosya vardır: file1, file2ve file3ve yazın:

    e fTabTabTab

    döngü:

    e file1
    e file2
    e file3

    ve geriye doğru gitmek istediğinizde, sadece Shift+Tab

  2. Yazarken:

    very-complicated-command with lots of command line parameters

    ve bir dahaki sefere aynı komuta ihtiyacınız olduğunda, sadece şunu yazın:

    very

    ve sizin için yazacağım:

    very-complicated-command with lots of command line parameters

Bu size bash bir ton zaman kazandıracak! ;-)


2
+1, ilginç, ancak: 1. ~/.inputrctercih edilebilir /etc/inputrcve 2. Bunu bashdoğrudan ayarlayabileceğinizi düşünüyorum : unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926/70524
muru

Bu oldukça hoş, teşekkürler (ve benim oyum olsun). Her iki dünyanın da en iyisini birleştiren, kullanacağı seçenekleri göstermenin evrensel bir yolu var mı? Klasörlerle sekme + sekme olasılığı gibi ve vb alt komutlarının, onları hatırlamak zorunda kalmamak için tüm (örneğin git branch <tab through branches>bir liste görebilseydin. Ancak, ve onun öğeler arasında sekmesini o dizinleri ve dosyaları için harika! Olacağını lsmevcuttur hangi maddelerin görmek için bir seçenektir Ancak alt komutlar için ne yazık ki o kadar da kolay ya açıktır..
Erik

Bu aynı zamanda PuTTy'de de çalışıyor! Sadece bir kez yeniden başlatmak zorunda kaldım :)
np8 5:17

@Erik: Görünüşe göre, istediğin mümkün, ancak işleri burada basit tutmak için cevabımı düzenlemeyeceğim. (mümkün olmayan eski yorum silindi)
Fabby

18

1'den sonra tabdaha fazla harf girmeniz gerekir. Yani yazarsanız

cd a

ve tabhiçbir şey alamadığınızda, bir saniye sonra tab(hemen ardından) ile başlayan isimlerin bir listesini alırsınız ave sonra fkalanı otomatik olarak tamamlaması için bir tane girmeniz gerekir.

cd atabtabftabtab

sonuçlanacak

cd afoo

2
IMHO: Bu doğru yol. Ben şahsen windows davranışını çok sinir bozucu buluyorum. Başlamak için çok fazla dosyanızın olduğu ave sonuncusuna ihtiyacınız olan durumu düşünün . Yanlışlıkla yaptığınız zaman sekmeye basarak adoğru olanı elde etmek için tüm olası tamamlamaların arasında dolaşmanız gerekir.
Tobias

@Tobias: kazara çok erken [Tab] tuşuna bastığınız zaman diğer sistem kullanılarak , hala [Ctrl] [K] var ... ;-)
Fabby
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.