Bash: Reverse Search

No Bash, é comum reexecutarmos comandos o tempo inteiro, especialmente quando precisamos compilar um programa ou mover um arquivo. O que se faz geralmente é ir apertando a tecla “para cima” e encontrar o comando desejado. Essa tarefa pode ser um pouco custosa, uma vez que o comando pode ter sido executado há horas e então, ficar voltando enumeros comandos não deve ser muito interessante.

Dessa forma, o Bash tem uma função chamada de Reverse-Search. Ela é basicamente uma procura no seu histórico de comandos, na ordem inversa da executada. Para usar este recurso, basta abrir o Bash e apertar Ctrl-R. A imagem abaixo mostra este recurso sendo utilizado:
Screenshot from 2015-12-15 00-26-41

Depois de iniciado o Reverse-Search, basta digitar o que deseja procurar. Na imagem abaixo, eu digitei “rm”, então a busca me trouxe um comando cat, que eu executei em um arquivo do /sys. Ele mostrou este comando por causa do caminho do cat, que continha a string “drm”:
Screenshot from 2015-12-15 00-31-39

Se a sua busca não foi exatamente como você queria, basta apagar e reescrevê-la, ou então pressionar Ctrl-R repetidamente para que o Reverse-Search continue buscando por comandos mais antigos com a mesma string que você digitou (a busca é dos comandos mais novos para os mais antigos). O campo de busca do Reverse-Search é como o Bash, você pode digitar e apagar o que escreveu, que ele busca conforme o for digitando.

Quando você encontrar o comando desejado, basta pressionar Enter que o comando é executado, ou então apertar no Tab que o comando cai no bash para que você possa editá-lo e então executá-lo.

Para sair do Reverse-Search basta digitar Ctrl-R.

Espero que tenham gostado desse post sobre o Bash! Até a próxima!

  • Jeremias Queiroz

    Top, não conhecia esse recurso.

    • Marcos Souza

      @jeremiasqueiroz:disqus, ficamos felizes que você gostou! Afinal, pensamos sempre em compartilhar esse tipo de dica, pois pode facilitar a vida de muita gente 🙂

      Valeu!

  • Jeremias Queiroz

    Top, não conhecia esse recurso.

    • Marcos Souza

      @jeremiasqueiroz:disqus, ficamos felizes que você gostou! Afinal, pensamos sempre em compartilhar esse tipo de dica, pois pode facilitar a vida de muita gente 🙂

      Valeu!

  • Jeremias Queiroz

    Top, não conhecia esse recurso.

    • Marcos Souza

      @jeremiasqueiroz:disqus, ficamos felizes que você gostou! Afinal, pensamos sempre em compartilhar esse tipo de dica, pois pode facilitar a vida de muita gente 🙂

      Valeu!

  • Eu não sei como sobrevivi esse tempo todo sem saber isso!

    Que ótima dica! Estão de parabéns!

    • Marcos Souza

      @disqus_BRwwgYmha2:disqus , valeu, e obrigado por acompanhar o blog 🙂

  • Eu não sei como sobrevivi esse tempo todo sem saber isso!

    Que ótima dica! Estão de parabéns!

    • Marcos Souza

      @disqus_BRwwgYmha2:disqus , valeu, e obrigado por acompanhar o blog 🙂

  • Eu não sei como sobrevivi esse tempo todo sem saber isso!

    Que ótima dica! Estão de parabéns!

    • Marcos Souza

      @disqus_BRwwgYmha2:disqus , valeu, e obrigado por acompanhar o blog 🙂

  • L L

    Sem CTRL+R no Bash não há vida. Agora uma curiosidade que tenho é em saber se tem como aumentar o limite da busca, se seria só aumentar o limite do histórico ou não. Alguém aí já teve que fazer isso?

    • joaoolavo

      Como assim, aumentar o limite da busca? O Ctrl+R busca no seu histórico, no ~/.bash_history. O comando “history” mostra todo o conteúdo desse arquivo, mas também basta dar um cat nele para vê-lo.

  • L L

    Sem CTRL+R no Bash não há vida. Agora uma curiosidade que tenho é em saber se tem como aumentar o limite da busca, se seria só aumentar o limite do histórico ou não. Alguém aí já teve que fazer isso?

    • joaoolavo

      Como assim, aumentar o limite da busca? O Ctrl+R busca no seu histórico, no ~/.bash_history. O comando “history” mostra todo o conteúdo desse arquivo, mas também basta dar um cat nele para vê-lo.

  • L L

    Sem CTRL+R no Bash não há vida. Agora uma curiosidade que tenho é em saber se tem como aumentar o limite da busca, se seria só aumentar o limite do histórico ou não. Alguém aí já teve que fazer isso?

    • joaoolavo

      Como assim, aumentar o limite da busca? O Ctrl+R busca no seu histórico, no ~/.bash_history. O comando “history” mostra todo o conteúdo desse arquivo, mas também basta dar um cat nele para vê-lo.

  • Marcello Chagas

    Pra quem usa ZSH, o comando é o mesmo. Quebra altos galhos aqui.

    • Patola

      Pra zsh (também uso – é o melhor xéu!) tem esse widget aqui que torna o Ctrl-R beeeeem mais poderoso e visual http://blog.patshead.com/2013/04/more-powerful-zsh-history-search-using-zaw.html

      • Marcello Chagas

        Muito bom, já tá no jeito aqui. Valeu!

    • L L

      ZSH é massa, o único contra que tenho é que volta e meia ele dá umas travadinhas no auto-complete. Não acontece contigo manolo?

      • Marcello Chagas

        Comigo não acontece isso, muito estranho. Eu fico sempre com 4 sessões locais dele abertas no screen e mais 4 via ssh em outra máquina na mesma rede e o autocomplete funciona redondo em todas.

        • L L

          Doido. Aqui to usando Arch, talvez seja isso. Ou minha máquina é um lixo. =D

          • Marcello Chagas

            Arch era pra ser mais rápido que meu Linux Mint 17.3.
            Meu notebook é um Core i3 2.5Ghz com 8 de memória e HD lerdo.

    • Marcos Souza

      @marcellochagas:disqus , nunca usei o zsh… o que ele tem de melhor que o bash? Estou sendo preguiçoso pois poderia ir no google hehehe 🙂

  • Marcello Chagas

    Pra quem usa ZSH, o comando é o mesmo. Quebra altos galhos aqui.

    • Patola

      Pra zsh (também uso – é o melhor xéu!) tem esse widget aqui que torna o Ctrl-R beeeeem mais poderoso e visual http://blog.patshead.com/2013/04/more-powerful-zsh-history-search-using-zaw.html

      • Marcello Chagas

        Muito bom, já tá no jeito aqui. Valeu!

    • L L

      ZSH é massa, o único contra que tenho é que volta e meia ele dá umas travadinhas no auto-complete. Não acontece contigo manolo?

      • Marcello Chagas

        Comigo não acontece isso, muito estranho. Eu fico sempre com 4 sessões locais dele abertas no screen e mais 4 via ssh em outra máquina na mesma rede e o autocomplete funciona redondo em todas.

        • L L

          Doido. Aqui to usando Arch, talvez seja isso. Ou minha máquina é um lixo. =D

          • Marcello Chagas

            Arch era pra ser mais rápido que meu Linux Mint 17.3.
            Meu notebook é um Core i3 2.5Ghz com 8 de memória e HD lerdo.

    • Marcos Souza

      @marcellochagas:disqus , nunca usei o zsh… o que ele tem de melhor que o bash? Estou sendo preguiçoso pois poderia ir no google hehehe 🙂

  • Marcello Chagas

    Pra quem usa ZSH, o comando é o mesmo. Quebra altos galhos aqui.

    • Patola

      Pra zsh (também uso – é o melhor xéu!) tem esse widget aqui que torna o Ctrl-R beeeeem mais poderoso e visual http://blog.patshead.com/2013/04/more-powerful-zsh-history-search-using-zaw.html

      • Marcello Chagas

        Muito bom, já tá no jeito aqui. Valeu!

    • L L

      ZSH é massa, o único contra que tenho é que volta e meia ele dá umas travadinhas no auto-complete. Não acontece contigo manolo?

      • Marcello Chagas

        Comigo não acontece isso, muito estranho. Eu fico sempre com 4 sessões locais dele abertas no screen e mais 4 via ssh em outra máquina na mesma rede e o autocomplete funciona redondo em todas.

        • L L

          Doido. Aqui to usando Arch, talvez seja isso. Ou minha máquina é um lixo. =D

          • Marcello Chagas

            Arch era pra ser mais rápido que meu Linux Mint 17.3.
            Meu notebook é um Core i3 2.5Ghz com 8 de memória e HD lerdo.

    • Marcos Souza

      @marcellochagas:disqus , nunca usei o zsh… o que ele tem de melhor que o bash? Estou sendo preguiçoso pois poderia ir no google hehehe 🙂

  • joaoolavo

    E Crtl+Shift+R volta no histórico. =)

  • joaoolavo

    E Crtl+Shift+R volta no histórico. =)

  • joaoolavo

    E Crtl+Shift+R volta no histórico. =)

  • Hugo Branquinho De Carvalho

    Uso esse recurso há muito tempo, realmente super útil. É engraçado ver pessoas que trabalham faz tempo com o sistema, e não conhecem esse recurso tão útil.

    • Marcos Souza

      @hugobranquinhodecarvalho:disqus, pois é! Mas, sempre tem pessoas que nunca viram esse recurso, e por isso achamos importante compartilhar, e pelo volume de comentários, foi a coisa certa a se fazer 🙂

  • Hugo Branquinho De Carvalho

    Uso esse recurso há muito tempo, realmente super útil. É engraçado ver pessoas que trabalham faz tempo com o sistema, e não conhecem esse recurso tão útil.

    • Marcos Souza

      @hugobranquinhodecarvalho:disqus, pois é! Mas, sempre tem pessoas que nunca viram esse recurso, e por isso achamos importante compartilhar, e pelo volume de comentários, foi a coisa certa a se fazer 🙂

  • Hugo Branquinho De Carvalho

    Uso esse recurso há muito tempo, realmente super útil. É engraçado ver pessoas que trabalham faz tempo com o sistema, e não conhecem esse recurso tão útil.

    • Marcos Souza

      @hugobranquinhodecarvalho:disqus, pois é! Mas, sempre tem pessoas que nunca viram esse recurso, e por isso achamos importante compartilhar, e pelo volume de comentários, foi a coisa certa a se fazer 🙂