Executar o comando com Ctrl + o em vez de Enter executará um comando do histórico e colocará na fila o próximo em vez de retornar para a frente da história do bash.
Desculpas, este título não é o mais elegante que eu já inventei.
Mas eu suponho que muitas pessoas já se perguntaram isso, e minha pergunta pode ser um engano ... tudo o que posso dizer é que não encontrei.
Quando eu digo "rolagem" para cima, quero dizer, usando a tecla "seta para cima" no teclado, que, obviamente, rola você através do histórico, começando pelo comando mais recente.
Então você encontra um comando de 30 comandos ... e você o executa. E então você quer rodar o comando que originalmente veio depois dele ... existe uma maneira ágil de fazer isso? Ou como aqueles fluentes em BASH fazem isso?
A resposta de Jon Reinhold é ótima, mas há uma muito mais poderosa solução que vou sugerir. Eu também tenho um comentário sobre uma pegadinha em A resposta de Jon, mas eu não tenho reputação suficiente para poder comentar diretamente, então @Jon Reinhold, se você ler isso, por favor, comente para você abaixo.
Bash inclui um comando fc
, que aceita como números de linha de parâmetros
da lista do histórico bash. Em seguida, ele abre seu editor padrão com aqueles
linhas como texto. Nesse ponto, você pode opcionalmente editar as linhas. Então,
quando você sai do editor, o bash executa essas linhas!
Um exemplo de uma edição que você pode querer fazer é anexar a todos, menos o última linha algo como "; leia -p" próximo ... ". Isso fará com que o bash execute cada linha e avise antes de continuar.
Comentário para Jon Reinhold: Ótima resposta, mas você deve qualificá-la
porque se o usuário tiver definido a variável bash HISTCONTROL para incluir
erasedups
, depois de executar C-o
, o usuário ficará confuso
porque em vez do próximo comando esperado na história sendo
exibido, aquele depois disso será exibido. Isso é porque o bash
excluiu a instância original do comando executado e, portanto,
todos os comandos depois mudaram uma linha, ie. para um menor
número de índice na lista de histórico.
Outra maneira de realizar o seu comportamento desejado seria se familiarizar com os atalhos de linha de leitura bash (dos quais CTRL - o é um que eu acredito) e busca de histórico bash.
A coisa legal com CTRL - e neste momento é que o buffer de histórico é definido contextualmente para este comando. Os próximos e anteriores comandos agora são os que foram executados antes e depois da linha que a pesquisa do histórico localizou para você. Você pode pressionar as setas para cima ou para baixo e pegar o próximo comando.
A pesquisa de histórico é muito poderosa e uma ótima maneira de evitar o uso da seta para cima para voltar ao comando em primeiro lugar. Uma pesquisa rápida de histórico pode salvar lotes de tempo manualmente pesquisando através do histórico e então você pode prosseguir com CTRL - o como Jon apontou acima.
Se você está querendo melhorar seu bash-fu geral, eu recomendo dar uma chance aos atalhos de readline para as teclas de seta. Você pode achar que eles são mais convenientes e permitem aumentar sua velocidade de digitação, mas é claro que YMMV. Aqui estão mais alguns:
Estes atalhos de linha de leitura (junto com CTRL - a iniciam de linha e CTRL - e fim de linha ) aumentará sua velocidade e eficiência na linha de comando imo.
Tags bash command-history