Önceki oku değil, aynı başlangıç ​​karakterlerine sahip komutlara göz atmak için yukarı oku yapılandırın


15

On bashkomut satırından, bana önceki komutu verir. Komut satırlarında numpyveya matlabbirkaç karakter yazdığımda, bana bu karakterlerden başlayarak önceden girilmiş komutu veriyor . Bu davranışı tam olarak nasıl etkinleştirebilirim bash?

Komut satırı geçmişinde arama yapmanın daha gelişmiş yollarının farkındayım, ancak bazen basit bir yol daha kullanışlıdır.

Yanıtlar:


18

Aradığınız readline komutları şu history-search-*komutlardır:

history-search-forward
Geçerli satırın başlangıcı ile geçerli imleç konumu (nokta) arasındaki karakter dizesini geçmişte ileriye doğru arar . Bu artımlı olmayan bir aramadır.
history-search-backward
Geçerli satırın başlangıcı ile nokta arasındaki karakter dizesini geçmişte geriye doğru arar . Bu artımlı olmayan bir aramadır.

Bunları .inputrc,

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

bir komutun ilk karakterlerini girmenize izin verir ve ardından yalnızca bu dizeyle başlayan komutlarınız arasında gezinmek için Upve Downtuşlarını kullanır .bash_history.

Örneğin, giren vive Upile başlayan ilk önceki komuta götürürdüm vigibi vim somefile. Girmek Upsizi bir önceki örneğe götürür ve böyle devam eder.

Tüm okuma hattı bağlamaları hakkında daha fazla bilgiyi buradan edinebilirsiniz: http://linux.about.com/library/cmd/blcmdl3_readline.htm


10

Aşağıdakileri yapmak için ~ / içindeki .inputrc dosyanıza aşağıdakileri ekleyin:

"\e[B": history-search-forward
"\e[A": history-search-backward

Belki de .bash_profile dosyanıza aşağıdakileri eklemek isteyebilirsiniz:

export INPUTRC=~/.inputrc

Neden bu "ihracatı" yaptığınızı açıklayabilir misiniz?
texnic

2

Bir "!" aradığınız komuta. Yukarı ve aşağı okların işlevlerini değiştirmek isterseniz, inputrc dosyasını değiştirmek (diğer yanıtların önerdiği gibi) gitmenin yoludur.

Aradığınız "komut" komuttursa, şunu girin:

!comm

Çıktı olarak "komut" almalısınız.

Aynı şekilde, komutun bir bölümünü içeren (ancak başlamayabilir) bir komut bulmak istiyorsanız, ctrl + r tuşlarına basın ve komutun bir kısmını yazın.

Girilen metninizi otomatik olarak tamamlamak için "sekme" de yazabilirsiniz (buna dosyalar da dahildir). Geçmişinizde olmayan bir komut arıyorsanız (veya bir geçmiş dosyanız yoksa) bu yararlıdır

Geçmiş dosyasına "hakim olma" hakkında daha fazla bilgiyi buradan edinebilirsiniz: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

Bu, /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line adresinin olası bir kopyasıdır.


Diğer cevaplar sorumu daha doğru cevaplıyor, ancak SO'ya işaretçi için teşekkürler (ayrıca bkz . Meta.stackexchange.com/q/4708/172266 ).
gerrit
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.