Bir kabuk komut isteminde Yukarı tuşuna bastığımda aynı önekle önceki komutu arama


19

Bir FreeBSD dünyadan geliyor Temelde yazarken FreeBSD biri, özellikle 9.1 versiyonu gibi Linux terminali davranacaksan yapmak isteyen cdterminali ve "yukarı" Eğer tarih başlayan tüm komutları göz atabilir ok ile itmek cdhangi siz yapan çok zaman kazanmak.

Linux Debian veya CentOS'ta beni bütünün yazmaya zorlayan bu özelliği nasıl etkinleştireceğimi bilmiyorum, lütfen biri yardımcı olabilir.


7
Bu kabuğun bir işlevi, terminal değil. FreeBSD'de hangi kabuğu kullanıyorsunuz? Linux için aynı (veya benzeri) kabuğu alabilirsiniz.
cjm

TCsh kabuğunu kullanıyorum.
Abdelilah Benaou

2
Bazı arama yaptıktan sonra ben koyarak sağlayabilir buldum ... OS X altında tcsh kullanıyorum ve bu kullanışlı görünümlü davranışı yoktu bindkey -k (up|down) history-search-(back|for)wardbenim de .tcshrc burada tarif . Güzel!
Garrett Albright

Yanıtlar:


34

Aşağıdakilere aşağıdakileri ekleyin ~/.inputrc:

# Press up-arrow for previous matching command
"\e[A":history-search-backward
# Press down-arrow for next matching command
"\e[B":history-search-forward

açıklama

~/.inputrcGNU readline için yapılandırma dosyasıdır . Dahil birçok kabukları, bashve tcshkomut satırı düzenleme için kullanılması taleb. Yukarıdaki iki satır, yukarı ok tuşu ( \e[A) ve aşağı ok tuşu ( ) için çıkış dizileriyle karşılaşıldığında readline'a geçmiş arama işlevini çağırmasını söyleyecektir \e[B.


Son satırın son kelimesini geçerli komutun sonuna koymak için F12 eklemeyi seviyorum . Last wordgenellikle çeşitli gizli klişelerde denemek istediğim bir yoldur . Ve Shift F12 baştan bütün son satırı editting beni geri koymak. ~/.inputrckullanışlı bir araçtır.
jalanb

Kaydırma F12 gerektiriyorsa vi modu .
jalanb

6

Olan şey, FreeBSD ve Linux'un varsayılan olarak farklı kabuklar kullanmasıdır. FreeBSD , geçmişte bash'den daha iyi etkileşimli özelliklere sahip olan (ancak bash yakalandı) ancak belirgin şekilde daha kötü komut dosyası yazma özelliklerine sahip olan tcsh'ı varsayılan olarak kullanır .

Alıştığınız ortamı elde etmenin en kolay yolu, Linux'ta kabuğunuzu tcsh olarak değiştirmek olacaktır. Tcsh'nin sistem genelinde yüklenmesi şartıyla (değilse, sistem yöneticinizden yüklemesini isteyin), chsh -s tcshvarsayılan kabuğunuzu değiştirmek için çalıştırın .

Alternatif olarak, bash'ı alışkın olduğunuz bu komutu alacak şekilde ayarlayabilirsiniz. Varsayılan olarak, Upve Downokları yalnızca yazdığınız önekle başlayanlar değil, geçmişteki tüm komutlar arasında gezinir. Bunu alışık olduğunuz davranışla değiştirmek için, aşağıdaki satırları .bashrcana dizininizdeki bash başlatma dosyasına koyun. . ~/.bashrcBaşlatma dosyasını yeniden okumak için yeni bir kabuk çalıştırın veya başlatın.

bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'

Kaçış dizileri, bir ok tuşuna bastığınızda terminalinizin kabuğa gönderdiği şeydir. Upolabilir \eOA(kaçış, O, A) ya da \e[Aterminalinizin bağlı olarak ve benzer için Down.

Varsayılan olarak, bash komut geçmişinde arama yapmak için farklı tuş bağlantıları sunar. Satırın herhangi bir yerinde bu alt dizeyi içeren bir komutu aramak için Ctrl+ tuşuna Rbasıp bazı karakterler girebilirsiniz. Geri gitmek yerine ileri gitmek için Ctrl+ tuşuna basın S. Arama artımlıdır (örneğin yazdığınız gibi); Alt+ Pve Alt+ Nartımlı olmayan bir arama sağlar.

Bash ve tcsh yerine, diğer kabuklarda bulunmayan bazı düzgün özelliklere sahip olan zsh'a geçebilirsiniz . Zsh, bash gibi varsayılan olarak Ctrl+ Rve Ctrl+ 'ya sahiptir S. Almak için Upve Downsiz tcsh vardı gibi aşağıdaki satırları koymak ~/.zshrc:

bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward

Her yerde aynı kabuğu kullanmak isterseniz, bağlantı noktasının yüklü olması koşuluyla FreeBSD'de bash veya zsh kullanabilirsiniz (yine sistem yöneticinize sorun).


1

tcshçoğu Linux dağıtımı için kullanılabilir. tcshPaketi yüklemeyi ve ardından chsh -s /bin/tcshvarsayılan kabuğunuz haline getirmek için çalıştırmayı deneyin .


1
Veya bash'a geçmeyi düşünebilirsiniz (yaptım).
Keith Thompson

1

Diğer cevaplar bununla mücadele eder, ancak daha fazlasını istiyorsanız, https://github.com/zsh-users/zsh-history-substring-search adresine bir göz atın

Prezto ( https://github.com/sorin-ionescu/prezto ) de zsh hediyelerle doludur.


Cevabınız için teşekkür ederim, bu arada hala bash veya tcsh'a göre hangi faydaların zsh olduğunu göremiyorum?
Abdelilah Benaou

1
Hum, tüm bu kabuklarda hemen hemen her temel şeyi yapabilirsiniz. Oldukça bakımlı prezto paketi (muhtemelen büyük oyun değiştirici), doğru istem (çünkü özel özellik) ve bash'den (cilalama ve malzeme) daha cilalı hissettirdiği için zsh kullanıyorum.
Fuad Saud
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.