Bash: kaçış tuşuna 4 kez basmak


11

Bir bash terminalinde 4 kez kaçışa bastığımda, böyle bir şey görüntüler:

-bash-4.1$
Display all 2837 possibilities? (y or n)
:
!
./
[
[[
]]
{
}
411toppm
a2p
ac
accept
accton
aclocal
aclocal-1.11
acpi_listen

Bu özellik nedir ve bu girişler nasıl bulunur? (İkinci esc tuşuna basıldığında, terminal sesli bir uyarı verir.)

Yanıtlar:


11
$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete

Bu, Emacs komut satırı düzenleme modunda Meta+Esc(ve Ctrl+i) tuşlarının varsayılan tuş bağlanmasının Readline işlevi olduğunu gösterir complete. MetaAnahtar genellikle Escaçık olmadan klavyelerde Metatuşu. Bu işlevin Readline belgelerinde:

Noktadan önce metin üzerinde tamamlama gerçekleştirmeye çalışın. Gerçekleştirilen gerçek tamamlama uygulamaya özgüdür. Örneğin Bash, metne değişken (metin başlarsa $), kullanıcı adı (metin başlarsa ~), ana bilgisayar adı (metin başlarsa @) veya komut (takma adlar ve işlevler dahil) olarak davranmayı tamamlamaya çalışır . Bunların hiçbiri eşleşme üretmezse, dosya adının tamamlanması denenir. Diğer yandan Gdb, program işlevlerinin ve değişkenlerinin tamamlanmasına izin verir ve yalnızca belirli durumlarda dosya adı tamamlamayı dener.


Anthon'un cevabı hakkındaki yorumunuzla ilgili olarak : Hayır, Esciki kez basmak Tabgenel olarak basmakla aynı şey değildir (her ikisini de Readline'ın varsayılan olarak yaptığı gibi aynı eylemle eşleyen bir programda olmadığı sürece). Ancak Ctrl+i olduğu aynı Tabtıpkı Ctrl+[aynıdır Esc. Birlikte tamamlanması yapabilirsiniz Bu araçlar Ctrl+[ Ctrl+[içinde basholduğu sürece çift, dilerseniz EscReadline bağlı olduğu completeişlevi. Örneğin, Escape tuşundan yoksun bir VT220 terminalinde çalışıyorsanız bu kullanışlıdır:

Almanca VT220 klavye


Kusalananda, bu derin cevap için teşekkür ederim. Son noktanız hakkında: her ikisi de tamamlanırsa neden Esciki kez basmak (veya \M-\e) Tabbash ile aynı değildir ?
flow2k

1
@ flow2k Esc-Esc ve Tab öğelerinin her ikisi de completevarsayılan olarak oldukları işleve bağlıysa aynıdır , ancak genellikle değil (yani tuşa basma "aynı değildir"). Tab'ı her yerde Esc-Esc ile değiştiremezsiniz, yalnızca readline uyumlu programlarda. Ancak, Tab'ı Ctrl-i ile veya Esc ile Ctrl- [her yerde kullanabilirsiniz.
Kusalananda

Eğer ben bir takip: Ben Tabçıktı görmüyorum bind -p. Neden? Belki Tabde "kodlanmış" olduğundan ve bağlanamadığından?
flow2k

1
@ flow2k Hayır, Sekme Ctrl-i ile aynı . Bakın \C-i. Bu, donanım düzeyinde bir denkliktir.
Kusalananda

8

Buna dosya tamamlama denir ve komut satırında önceki bir komutunuz yoksa, bash size hem yerleşik hem de bilgisayarınızda bulunan tüm 2837 komutlarını tamamlamanızı önerir. PATH

Sıralı olarak sunulur


1
İlginç - bu sekmeye iki kez basmakla aynı şey. Belki 2 kaçış = 1 sekme?
flow2k
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.