Usando a seta para cima para executar o comando anterior


11

Que configuração eu preciso usar a seta para cima para executar o comando anterior? No Mac, posso usar a seta para cima para executar novamente o comando que acabei de executar, mas ele não parece funcionar com meu shell bash.

Uso 8.04 (não posso usar a distribuição mais recente devido a alguns problemas de versão do compilador).

ADICIONADO

Não mudei nada, pois é uma nova instalação com o VMWare Fusion no Mac.


3
Na configuração padrão, a seta para cima funciona perfeitamente: você modificou alguma coisa?
enzotib

como @enzotib diz que o bash fará isso por padrão, mas outros, por exemplo, sh não!
Rory Alsop

Respostas:


10

Verifique se o seu histórico está ativado. Você pode verificar o status atual executando:

set -o

A saída deve conter (observe a history onlinha):

histexpand      on
history         on
ignoreeof       off

Se isso não estiver ativado, você precisará executar set -o history. Para tornar essa alteração persistente, você deve anexá-la a ~/.bashrc:

set -o history

Se você deseja executar o comando anterior, também pode executar o próximo comando:

!!

Na página de manual do Bash :

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.

Se você estiver usando o Bash, também poderá usar os atalhos padrão para navegar pelo histórico:

  • Ctrl+ P: Comando anterior
  • Ctrl+ N: Próximo comando

    Comandos para Manipular o Histórico Histórico Anterior (Cp) Busque o comando anterior na lista de histórico, retornando à lista. next-history (Cn) Busque o próximo comando da lista de histórico, avançando na lista.


1
Verifiquei se a configuração está correta, mas a tecla de seta para cima não funciona. No entanto, eu posso usar Ctrl-P / N para obter o mesmo resultado. Obrigado.
prosseek

@prosseek Nesse caso, você mudou /etc/inputrcou ~/.inputrc? Além disso, qual sequência de escape a seta para cima e para baixo produz no terminal que você está usando? Para verificar, execute e cat, na linha vazia, pressione uparrow e downarrow e, em seguida, pressione Ctrl + C para sair do gato. Aqui produz ^[[A^[[B.
Geirha

@geirha: Eu não tenho o arquivo ~ / .inputrc e não mudei nada / etc / inputrc. E para a sequência de fuga, não consegui ver nada na tela.
prosseek

@prosseek Então parece que as teclas de seta nunca chegam ao terminal. Talvez a interface do VMWare os esteja filtrando ou algo assim.
Geirha 11/04

14

Verifique se você está realmente usando o bash. Uma pegadinha comum é a criação de um novo usuário em useraddvez do adduseraplicativo Usuários e Grupos (GUI). Com o primeiro, o conjunto de shell padrão é /bin/sh. Run chsh( ch ange sh ell) para se certificar de que está definido para /bin/bash.


1

No terminal, digite:

gedit  ~/.inputrc

Em seguida, copie e cole e salve:

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

A partir de agora, no terminal, você poderá fazer uma pesquisa incremental. Tudo o que você precisa fazer para encontrar um comando anterior é digitar, digamos, as duas ou três primeiras letras e a seta para cima o levará até lá rapidamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.