Önceki komutu çalıştırmak için yukarı oku kullanma


11

Önceki komutu çalıştırmak için yukarı ok kullanmam gereken kurulum nedir? Mac ile, çalıştırdığım komutu yeniden çalıştırmak için yukarı oku kullanabilirim, ancak bash kabuğumla çalışmıyor gibi görünüyor.

8.04 kullanıyorum (bazı derleyici sürüm sorunları nedeniyle en yeni dağıtımı kullanamıyorum).

KATMA

Mac üzerinde VMWare Fusion ile yeni bir yükleme olduğu için hiçbir şey değiştirmedim.


3
Varsayılan yapılandırmada, yukarı ok mükemmel çalışır: bazı şeyleri değiştirdiniz mi?
enzotib

@enzotib'in söylediği gibi bash bunu varsayılan olarak yapar, ancak bazı diğerleri, örneğin sh yapmaz!
Rory Alsop

Yanıtlar:


10

Geçmişinizin etkin olduğundan emin olun. Mevcut durumu aşağıdakileri çalıştırarak kontrol edebilirsiniz:

set -o

Çıktı history onşunları içermelidir ( satırı not edin ):

histexpand      on
history         on
ignoreeof       off

Bu etkin değilse, çalıştırmanız gerekir set -o history. Bu değişikliği kalıcı hale getirmek için aşağıdakilere eklemeniz gerekir ~/.bashrc:

set -o history

Önceki komutu çalıştırmak istiyorsanız, sonraki komutu da çalıştırabilirsiniz:

!!

Gönderen Bash kılavuzu sayfa :

Event Designators
   An event designator is a reference to a command line entry in the history 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 trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

Bash kullanıyorsanız, geçmişte gezinmek için de varsayılan kısayolları kullanabilirsiniz:

  • Ctrl+ P: Önceki komut
  • Ctrl+ N: Sonraki komut

    Geçmişi Değiştirmek için Komutlar önceki geçmiş (Cp) Geçmişteki listeden geri giderek önceki komutu alın. next-history (Cn) Geçmiş listesinde bir sonraki komutu alır ve listede ilerler.


1
Kurulumun doğru olduğunu kontrol ettim, ancak yukarı ok tuşu çalışmıyor. Ancak, aynı sonucu elde etmek için Ctrl-P / N kullanabilirim. Teşekkürler.
prosseek

Bu durumda @prosseek, sen değişti /etc/inputrcya ~/.inputrc? Ayrıca, yukarı ve aşağı ok kullandığınız terminalde hangi çıkış sırasını üretir? Kontrol etmek, koşmak cat, sonra boş satırda, yukarı ve aşağı tuşlarına basın, sonra kedi çıkmak için Ctrl + C tuşlarına basın. Burada üretiyor ^[[A^[[B.
geirha

@geirha: ~ / .inputrc dosyam yok ve / etc / inputrc dosyasını değiştirmedim. Ve kaçış dizisi için ekranda hiçbir şey görmedim.
prosseek

@prosseek Sonra ok tuşları asla terminale ulaşmıyor gibi geliyor. Belki de VMWare arayüzü onları filtreliyor veya bir şey yapıyor.
geirha

14

Aslında bash kullandığınızdan emin olun. Yaygın bir gotcha, Kullanıcılar veya gruplar (GUI) uygulaması useraddyerine yeni bir kullanıcı oluşturuyor adduser. İlkinde, varsayılan kabuk kümesi 'dir /bin/sh. Olarak ayarlandığından emin olmak için chsh( ch ange sh ell) komutunu çalıştırın /bin/bash.


1

Terminalde şunu girin:

gedit  ~/.inputrc

Ardından yapıştırın ve kaydedin:

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

Artık terminalde artımlı arama yapabilirsiniz, Bir önceki komutu bulmak için yapmanız gereken tek şey, ilk iki veya üç harfin ve yukarı okun sizi oraya hızlı bir şekilde götüreceğini söylemek.

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.