<-- home

Dicas bash

Este post é composto por um conjunto de dicas sobre bash que podem lhe ajudar a melhorar a performance com a ferramenta. Parte do material encontrei nas referências; não obstante, a grande maioria do conteúdo coletei de forma gradual conforme fui adquirindo experiência. O Bash, por default, utiliza com frequência os mesmos comandos que o Emacs, futuramente farei um post sobre como tornar o Bash mais parecido com o Vim.

Último comando

O fato deste grupo de funcionalidades não ser altamente conhecido por mais de uma vez me impressionou. Foi ele também o motivador da criação deste post.

Reaproveitando o último argumento do último comando

ESC+. para repetir em seu bash o último argumento do último comando.

Reaproveitando o último comando

Utilize o comando !! para rodar o último comando e !com para rodar o último comando começando com com.

Reaproveitando a saída do último comando

Se a saída do último comando foi de acordo com o esperado, você pode utilizá-la em outro comando utilizando $(!!).

Histórico

  • Ctrl-r: Procurar no histórico (Enter quando encontrar o comando desejado para executá-lo).
  • Ctrl-r duas vezes: procura no histórico o último item pesquisado.
  • Ctrl-g: cancela a busca e retorna o comando antigo.

Movimentações

Ctrl-Left|Right: Navega palavra à palavra.

Estilo Emacs

  • Ctrl+a: Move o cursor para o início da linha;

  • Ctrl+e: Move o cursor para o final da linha;

  • Ctrl+f: Move o cursor um caractere para a frente;

  • Ctrl+b: Move o cursor um caractere para trás;

  • Alt+f: Move o cursor uma palavra para a frente;

  • Alt+b: Move o cursor uma palavra para trás.

Modificação de strings

  • Ctrl-w: Deleta toda a palavra à esquerda do cursor;

  • Ctrl-k: Deleta até o final da linha;

  • Ctrl-u: Deleta até o início da linha.

Scroll e buffers

  • Shift-PageUp|PageDown: Faz scroll para cima;

  • Ctrl-s: Pausa a saída do terminal (o programa continua rodando);

  • Ctrl-q: Libera a saída do terminal (depois de ter sido pausada);

  • Ctrl-l: Limpa a tela.

Controle de processos

  • Ctrl-d: SIGKILL;

  • Ctrl-c: mata o processo atual;

  • Ctrl-z: coloca o processo atual em background (fg para retornar).

Bloqueando e desbloqueando o terminal

  • Ctrl-s Bloqueia o terminal

  • Ctrl-q Desbloqueia o terminal

Ranges

Facilitando o Backup

cp /etc/http/conf.d/httpd.conf{,~}

é equivalente à

cp /etc/http/conf.d/httpd.conf /etc/http/conf.d/httpd.conf~

Para restaurar

cp /etc/http/conf.d/httpd.conf{~,}

Ranges em meio à strings

Geralmente não lembro desta funcionalidade nos raros casos que necessito dela mas algumas opções são:

mkdir -p /squashed/{usr,opt}/{rw,ro}

equivalente à

 mkdir -p /squashed/usr/rw \
 /squashed/usr/ro \
 /squashed/opt/rw \
 /squashed/opt/ro

Expansão de padrões

echo {0..9}{A..Z}

Imprime 260 combinações!

Novas dicas são extremamente bem vindas.

Referências

  1. http://feedproxy.google.com/~r/TheLinuxDaily/~3/kr-KdtCdank/
  2. http://blog.falconindy.com/articles/savings-keystrokes-with-bash.html
  3. http://teohm.com/blog/2012/01/04/shortcuts-to-move-faster-in-bash-command-line/