.png)
Como faço para personalizar o Bash para que as teclas para cima e para baixo sejam iguais às do cmd?
Por exemplo
$echo command1
$echo command2
$echo command3
$echo command4
Tanto no Bash quanto no cmd, pressionar ↑, ↑, ↑, ENTERexecutará echo command2
.
No entanto, pressionar posteriormente a tecla para baixo em cmd irá direto para o comando posterior, ou seja echo command3
, . Pressionar a tecla para baixo no Bash não faz nada. cmd mantém o histórico pontual (semelhante aos botões Voltar e Avançar em um navegador da web), mas o Bash não.
Da mesma forma com o cmd, pressionar a tecla para cima duas vezes no cmd traz de volta echo command1
, enquanto fazer isso no Bash retorna echo command3
.
Muitas vezes desejo desculpar alguma cadeia de comandos que inseri anteriormente em ordem. É realmente útil no cmd poder rolar para trás no histórico até o primeiro da sequência e então, ↓, ENTER, ↓, ENTER, ↓, ENTER...
No entanto, não consigo encontrar uma maneira semelhante de fazer isso no Bash. É possível modificar ~/.inputrc
algum outro arquivo de alguma forma para conseguir isso?
Responder1
Embora pessoalmente eu não queira fazer isso porque me acostumei com a história do bash, mas posso ver por que as pessoas iriam querer. Eu já investiguei isso antes, para um colega de trabalho, que era novo no *nix e queria funcionalidade semelhante ao DOS em um xterm, e então, como agora, não parece haver uma solução.
Acabei de fazer outra pesquisa extensa e não consigo encontrar nada óbvio, além de:
- DOSEMU, que não é exatamente o que você procura, e;
- Faça sua linha de comando do Linux funcionar como DOS com script de shell, mas o link parece um tanto intermitente e, além disso, provavelmente não é isso que você realmente deseja. Este link apenas fornece maneiras desubstituindoComandos Unix para comandos DOS, usando scripts personalizados.
Estranhamente, existem muitas maneiras de tornar o cmd mais bash, como, por exemplo,Recurso semelhante ao histórico do Bash para prompt de comando do Windows, mas, infelizmenteNão o contrário.
O principal problema é, para simplificar (excessivamente), que a funcionalidade da tecla do cursor (e como ela interage com o histórico) está incorporada no código-fonte do Bash, e scripts, aliases e funções de shell não podem substituir esse fato 1 . O que você precisa é de umreescritobash, com diferentes funcionalidades de teclas de cursor [alternáveis?] incorporadas, uma espécie de "DOSBash", se preferir.
Talvez haja a oportunidade de atender um nicho de mercado e alguém eventualmente atenda a essa necessidade, mas eu não prenderia a respiração.
1 Se eu estiver incorreto e for possível substituir a funcionalidade da tecla do cursor por uma simples alteração no arquivo de recursos, ficaria encantado se alguém pudesse me esclarecer.
Responder2
O truque que uso, tal como está, é 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
to echo command4
, basta bater ↑3 vezes para chegar a echo command2
, e depois 3 vezes novamente para chegar echo command3
e 3 vezes novamente para echo command4
.
Portanto, se você retrocedeu N itens em seu histórico pressionando ↑N vezes, pressioná-lo N vezes novamente o levará ao próximo comando a cada vez, porque o novo que você executou foi inserido.