Kabuk için iPython Like Komut Geçmişi


24

Ubuntu'da python programlama yapmayanlarınız için, ipython steroidler üzerinde bir python kabuktur, ancak bu bilinen özelliğe sahiptir, sadece bilinen isimlere dayanarak yazmaz (yani tabh tuşuna basarken aynı şekilde bash yapar) ancak bir komut yazmaya başlar ve yukarı basarsanız, tüm tarih boyunca (bash gibi) kaydırmaz, ancak yalnızca aynı sözcük dizesiyle başlayan son komutlar boyunca kaydırılır.

Öyleyse scp -r -P 8000 -l user server.com:~/dir/to/copy ./, birkaç başka komutun takip ettiği gibi uzun bir komut yaptıysanız . Yazmaya başladığınızda scpve basıldığında bash, sadece tüm geçmişi kaydırmak yerine, daha önce gösterilen komutu gösterir.

Bash için buna benzer bir uzantı var mı? veya bu tür bir özellik sunan herhangi bir kabuk var mı?

Yanıtlar:


26

Bash de bu özelliğe sahip, ancak varsayılan olarak etkin değil. Bunu içine yapıştırarak imleci yukarı / aşağı bağlayabilirsiniz ~/.inputrc:

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

Bunun Ctrlyerine + yukarı / aşağıya bağlamayı tercih ederim :

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

düzenleme: korumak ctrl+leftve ctrl+righttüm kelimeleri ileri ve geri taşımak için, ayrıca bu satırları ~/.inputrcdosyaya ekleyin :

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

Bu ipucunu kullanarak, şimdi bir sonraki / önceki sözcüğe atlamak için terminalde Ctrl + sol / sağ kullanamıyorum, bu benim için tüm amacı mahvetti. Belki geçici çözüm vardır?
zetah,

@zetah Cevabı değiştirdim kelime taşıma için geçici çözümüm
wim

1
Tüm varsayılanları korumak için $include /etc/inputrc, tercihen ilk satıra da ekleyebilirsiniz .
Tulio Casagrande

9

Ctrl+ Tuşuna basmayı Rve birkaç harf yazmayı deneyin . Ters sırayla da çalışır.


6

Ve bash fantastik tarih genişleme kısayolları unutmayın. 1

Kolunuzdan dövme yaptırmamış olabilirsiniz (veya ezberledim) diye, sayfadan bazı alıntılar gönderiyorum.

   Event Designators  
       An event designator is a reference to a command line entry in the  his
       tory list.

       !      Start  a  history substitution, except when followed by a blank,
              newline, carriage return, = or ( (when the extglob shell  option
              is enabled using the shopt builtin).
       !n     Refer to command line n.
       !-n    Refer to the current command line minus n.
       !!     Refer to the previous command.  This is a synonym for `!-1'.
       !string
              Refer to the most recent command starting with string.
       !?string[?]
              Refer  to the most recent command containing string.  The trail‐
              ing ? may be omitted if string is followed immediately by a new‐
              line.
       ^string1^string2^
              Quick  substitution.  Repeat the last command, replacing string1
              with string2.  Equivalent to ``!!:s/string1/string2/'' (see Mod‐
              ifiers below).
       !#     The entire command line typed so far.

Sık sık önceki komutun son “kelimesine” gönderme kabiliyetini kullanırım. Örneğin,

mkdir /foo/shmoo/adir.horribilus.foo
cp file1 file2 file3 file4 !$ 
ls -l !$

Burada her iki durumda da !$eşleşmeler var /foo/shmoo/adir.horribilus.foo.


1 ... csh'den alınmıştır. Bash özellik hırsızlığının kapsamını azaltmak için, bash man sayfasının

   The shell supports a history expansion feature that is similar  to  the
   history  expansion in csh.  

Yani, "benzer". Bunlardan herhangi biri cshveya içeri girebilir tcsh. Ya da hangi csh iniyorsa, o kadar da harika olmadığı için kullanmadığınız bash.


0

Yukarıda belirtilen @ ak2 ile benzer bir alternatif var , ancak yeni bir .inputrc dosyası oluşturmanız gerekmez.

Bunun yerine, sudo izinleriniz varsa, bunu / etc / inputrc dosyasında etkinleştirebilirsiniz. Bu dosyada, geçmiş arama özelliğini içeren çeşitli klavye ayarları bulunmaktadır (en azından 18.04 için). / Etc / inputrc öğesinden alıntı:

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

Basitçe bir sudo dosya editörü (örneğin, $ sudo vim) kullanarak alt iki satırı açmanız yeterlidir; yeni bir terminal oturumu geçmiş arama özelliğine sahip olacaktır (tüm kullanıcılar için).

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.