Como obter histórico de seta para baixo navegando no bash no Mac OS X Terminal?

2

Em quase todos os ambientes modernos de linha de comando que usei, você pode clicar na seta para voltar alguns comandos em seu histórico e executar novamente um comando anterior. Mas em alguns ambientes de linha de comando que usei, no próximo prompt de comando depois de fazer isso, você também pode clicar na seta para baixo para percorrer seu histórico a partir do local em que o comando anterior apareceu no histórico.

Por exemplo, suponha que você faça isso:

$ vi mysource.c  
$ make  
$ make test  

Suponha, então, que o seu teste falhe e você deseje voltar novamente por essas etapas, para que você acesse a seta para cima 3 vezes para voltar para vi mysource.c e clique em retornar para executá-lo. Então, no próximo prompt depois disso, eu quero ser capaz de acertar a seta para baixo uma vez para chegar em make . E no próximo prompt depois disso, eu quero acertar a seta para baixo uma vez para chegar em make test .

Não sei se se trata das configurações padrão bash do Mac OS X, ou das configurações padrão do Terminal.app, ou o quê, mas isso "acerta a seta para baixo em um novo prompt para percorrer o histórico do último você usou o histórico "a funcionalidade não está ativada por padrão.

Eu naveguei na página bash(1) man e encontrei:

       forward-search-history (C-s)

... mas ^S não parece fazer nada. Não tenho certeza se ele estava sendo engolido pelo Terminal como um old school XOFF ou algo assim (embora pareça não pausar a saída do terminal).

Algumas outras notas:

  • Estou no Mac OS X Snow Leopard 10.6.6.
  • Já estou ciente de muitas outras maneiras divertidas de trabalhar com o histórico do shell, é apenas uma coisa específica que estou tentando fazer agora.
  • Embora quaisquer ponteiros na direção correta possam ser úteis, as soluções conhecidas para trabalhar no bash do 10.6.x em Terminal.app seriam muito mais úteis.
por Spiff 24.02.2011 / 18:46

2 respostas

1

^S faz o oposto de ^R (depois que você fez ^R ). Pode ser necessário fazer stty -ixon para desativar o comportamento XOFF .

O mais próximo do que você está procurando é fornecido por ^O (readline operate-and-get-next ). Pressione a seta para cima para recuperar um comando anterior e pressione ^O em vez de Enter . O comando será executado. Quando o prompt é emitido novamente, o próximo comando no histórico será colocado na linha de comando. Você pode usar as setas Enter ou ^O neste ponto.

    
por 24.02.2011 / 18:58
1

Dependendo da sua versão do stty, você pode precisar de "stty flush undef". (Atualmente, a página man do OS X stty documenta "flush", mas a saída stty -a ainda exibe o valor de "descartar").

Use ^ o para executar um comando a partir do histórico quando achar que pode querer o próximo comando também. Se você quiser, basta repetir o ^ o. Se você não quer afinal, então você se move na história a partir desse ponto com ^ p, ^ n, ^ s, etc., ou limpe a linha de comando com ^ u.

    
por 23.10.2015 / 18:52