Personalize as teclas para cima e para baixo para corresponder à funcionalidade cmd (point-in-time)

3

Como eu personalizo o Bash para que as teclas para cima e para baixo sejam as mesmas que no cmd?

Por exemplo,

$echo command1
$echo command2
$echo command3
$echo command4

Em Bash e cmd, pressionando , , , ENTER executará echo command2 .

No entanto, a seguir, pressionar a tecla para baixo no cmd irá diretamente para o comando, ou seja, echo command3 . Pressionar a tecla Down no Bash não faz nada. cmd mantém o histórico do ponto no tempo (semelhante aos botões Voltar e Avançar em um navegador da web), mas o Bash não.

Da mesma forma com cmd, pressionar a tecla up duas vezes em cmd traz de volta echo command1 , enquanto que fazendo isso no Bash, retorna echo command3 .

Há muitas ocasiões em que desejo desculpar algumas cadeias de comandos que eu inseri anteriormente em ordem. É muito útil em cmd que eu possa rolar através do histórico para o primeiro da sequência e depois, , ENTER , , ENTER , , ENTER ...

No entanto, não consigo encontrar uma maneira semelhante de fazer isso no Bash. É possível modificar ~/.inputrc ou algum outro arquivo de alguma forma para conseguir isso?

    
por deejbk 31.03.2016 / 17:57

2 respostas

2

Embora, pessoalmente, eu não queira fazer isso, já me acostumei com a história do bash, mas posso ver por que as pessoas gostariam. Eu já examinei isso antes, para um colega no trabalho, que era novo no * nix e queria uma funcionalidade semelhante ao DOS em um xterm, e então, como agora, não parece haver uma solução.

Acabei de fazer outra pesquisa extensiva e não consigo encontrar nada óbvio, exceto:

Estranhamente, há várias maneiras de tornar o cmd mais bash, por exemplo, Recurso semelhante ao Bash History para o Prompt de Comando do Windows , mas infelizmente não é o contrário .

O problema principal é colocá-lo (excessivamente) simplesmente, que a funcionalidade da chave do cursor (e como ela interage com o histórico) é embutida no código fonte do Bash, e scripts, aliases e funções shell não podem sobrescrever esse fato. 1 O que você exigiria é uma bash reescrita , com diferentes [switchable?] Funcionalidade de chave de cursor embutida nela, uma espécie de "DOSBash", se você quiser.

Talvez haja a oportunidade de um nicho de mercado ser atendido, e alguém acabará atendendo a essa necessidade, mas eu não prenderei a respiração.

1 Se eu estiver incorreto e for possível sobrescrever a funcionalidade da tecla do cursor por uma simples alteração no arquivo de recurso, eu ficaria muito feliz se alguém puder me explicar.

    
por Greenonline 31.03.2016 / 18:23
0

O truque que eu uso, como é, é simplesmente repetir o mesmo número de :

$ echo command1
$ echo command2
$ echo command3
$ echo command4

Se eu quiser repetir a sequência de echo command 2 a echo command4 , acabei de chegar 3 vezes para chegar a echo command2 e, em seguida, 3 vezes novamente para obter echo command3 e 3 vezes novamente para echo command4 .

Então, se você tiver retornado N itens em seu histórico pressionando N vezes, acertar N vezes novamente levará você ao próximo comando todas as vezes, porque o novo que você executou tem foi inserido.

    
por terdon 03.04.2016 / 18:41