Bash komut satırında * nasıl genişletilir?


34

Ben yazarsanız anlıyoruz ls *aslında şekilde genişletilir ls a b cakımı doğrudan dosya olmadığında a, bve c.

Girmeden önce bunu genişletmenin bir yolu olup olmadığını merak ediyordum. Benzer nasıl Ctrl + X işleri veya sekme komple çalışır.

Böylece kendimi açıklığa kavuşturmak için

$ ls *
<press magic key>
$ ls a b c

benzer şekilde:

$ ls ~/
<press tab>
$ ls /home/username

Bunu daha önce gördüğümü sanıyordum ama yanılmış olabilirim.


Çok az şey biliyorum ama bildiğim en iyi şey $ echo * <ENTER> Bunu ls * komutundan önce yapabilirsin. Tabii ki isabetli bir sekme veya elbette genişletmek için bir kısayol değil.
barlop

Fakat belki de linux kullanıcıları ls * çok 'gibi bir şey yapmazlar çünkü muhtemelen ls için gerekli değildir, ama aynı zamanda farklı kabukları üzerinde farklı davranışlar sergilerler, bu yüzden taşınabilir değildir, ancak uygun olduğunda iyi olur. Ama bu durumda, gerekli değil. ls * / dizinleri listeler, fakat ne yapmak için tasarlandığını o kadar fazla değildir.
barlop

Yanıtlar:


19

Bu glob-expand-wordişlevi insandan kullanabilirsiniz.bash :

Noktadan önceki kelime, yol adı için bir kalıp olarak değerlendirilir.
genişletme ve eşleşen dosya isimlerinin listesi eklenmiş,
sözcüğü değiştirme. Sayısal bir argüman varsa, bir
Yıldız adı genişletme işleminden önce eklenir.

Şuna bir şey ekle ~/.inputrc:

Control-x: glob-expand-word

Öyleyse , örneğinize $ ls *göre Ctrl-Xgenişleyecektir $ ls a b c.


8
Zaten bağlı olmalı. Ctrl-x zaten bir sürü şeye önek olarak bağlanmış durumda. Do bind -p | grep 'C-x'onları görmek için.
sonraki duyuruya kadar duraklatıldı.

Tam olarak aradığım şey buydu! Thanks
bramp

@Dennis, zaten bağlı değildi, ama .inputrc dosyasına ekledi. Sanırım bu Debian'ın varsayılanı.
Bramp

3
@Dennis: C-x*Benim sistemime bağlı .
cYrus


11

Eğer olduğunuz zaman vimodu ( set -o vi), "sihirli anahtar" dır Esc*. Bu hem bashve ile çalışır ksh.


Sadece titremelere açık olmak için, ilk önce normal olarak komut satırını yazarken yıldız işaretini yazın, sonra düzenleme modundan çıkın, hemen kaçarsanız imleç yıldız işaretini seçer, sonra yıldız işaretinde imleci bulunan yıldız işaretiyle vurur ve yıldız işareti genişletme ve tekrar düzenleme moduna bırakın.
NeilG


0

Glob-genişletme kelimesine (\ Cx *) alternatif bir eklemedir (\ e *). Sonunda yıldız olmadan çalışır, ancak gizli dosyalar gibi diğer tamamlamaları da içerir. Her ikisini de ~ / .inputrc olarak ribaund yaptım:

# insert glob results (\C-x* by default)
"\C-g": glob-expand-word

# insert completion list (\e* by default)
"\ei": insert-completions

topak tamamlama-kelime (\ gibi), örneğin dönüştürmek için kullanılabilir /System/Library/Launch*/*Finderiçin /System/Library/LaunchAgents/com.apple.Finder.plist.

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.