Minhas dicas favoritas do Bash

O artigo original (em inglês) foi postado aqui:
My Favorite bash Tips and Tricks
$ echo {one,two,red,blue}
one two red blue
Usando um echo simples eu obteria o mesmo resultado
echo one two red blue
Mas protegendo uma lista entre chaves eu obtenho mais que isso, veja:
$ echo fish{one,two,red,blue}
fishone fishtwo fishred fishblue

$ echo {"one ","two ","red ","blue "}fish
one fish two fish red fish blue fish

Using !?text?
This will execute the most recent command that contains the word ‘text’. Example:




debian$ !?xjf?
tar -xjf hedgewars-src-0.9.14.1.tar.bz2
tar: hedgewars-src-0.9.14.1.tar.bz2: Cannot open: No such file or directory



Alternando entre opções (tab completion)

# coloque no seu ~/.inputrc # o tab completion será ativado 
# com alternativas usando o atalho Ctrl-i
"\C-i": menu-complete   
 
$ cp /etc/httpd/conf/httpd.conf{,.bak}

Gerando backup de um arquivo
$ cp /etc/httpd/conf/httpd.conf{,.bak}

Obs: Se você usar somente a vírgula ele imprime o nome duplicado veja...

echo nome{,.sufixo}

agora faça:

echo nome{,.bak}

Essa abordagem (usando a expansão de variáveis) é também usada quando usamos o comando
mkdir para criar uma extutura completa de pastas:
mkdir -p docs/{img/{fotos,icons,wallpapers,svg},textos/{artigos,man},tmp}

A regra aqui é a seguinte:

para cada pasta que conterá subpastas use "nome/{}"
dentro das chaves coloque os nomes separados por vírgula
e não esqueça de usar o parâmetro '-p' no começo do comando!

O Bash simplesmente cria o arquivo 'bak' no caminho indicado sem a necessidade de fazer algo como:
$ cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

O comando cp tem ainda um jeito legal para fazer backups, no qual ele preserva
as permissões, não desreferencia links simbolicos e apenas escreve o que for mais recente.
cp -uvfa /origem /destino
  • u - update
  • v - verbose (detalhado)
  • f - força
  • a - Equivale às opções -dpR do cp


Formatando a data de um jeito mais simples:
$ date +%d-%b-%Y
12-Mar-2004

Outra possibilidade --> echo $(date +%T)
Repetindo o argumento do comando anterior

ls -l /etc/passwd
vim alt-.

Na verdade o alt-. vai alternando etre agumentos dos
ultimos comandos

# pode-se usar em scripts algo assim
wget -c http://link-para-arquivo -O nome-a-ser-atribuido  && chmod 700 $_

# o cifrão no comando acima corresponde ao último parâmetro do último
# comando, útil ao baixar e logo tornar executável




Para inserir todos os argumentos do último comando

!*

Para alternar entre o começo da linha e a posição atual

Ctrl-x Ctrl-x

Para exibir a vesão do bash

Ctrl-x Ctrl-v



Para fazer uma busca incremental reversa no histórico de comandos

Ctrl-r ......... comece a digitar um comando longo recém executado

Para "ver" como foi a execução do ultimo comando ping

!ping:p

Substituindo um trecho do comando anterior "use o circunflexo mesmo"

ping -c 2 www.google.com

^google^yahoo

Tabém pode ser assim:

!!:gs/foo/bar

E tem mais...

Bash Shell Shortcuts

Bash, which is the default shell in Linux contains a whole lot of key bindings which makes it really easy to use . The most commonly used shortcuts are listed below :

____________CTRL Key Bound_____________
Ctrl + a - Jump to the start of the line
Ctrl + b - Move back a char
Ctrl + c - Terminate the command
Ctrl + d - Delete from under the cursor
Ctrl + e - Jump to the end of the line
Ctrl + f - Move forward a char
Ctrl + k - Delete to EOL
Ctrl + l - Clear the screen
Ctrl + r - Search the history backwards
Ctrl + R - Search the history backwards with multi occurrence
Ctrl + u - Delete backward from cursor
Ctrl + xx - Move between EOL and current cursor position
Ctrl + x @ - Show possible hostname completions
Ctrl + z - Suspend/ Stop the command
____________ALT Key Bound___________
Alt + < - Move to the first line in the history Alt + > - Move to the last line in the history
Alt + ? - Show current completion list
Alt + * - Insert all possible completions
Alt + / - Attempt to complete filename
Alt + . - Yank last argument to previous command
Alt + b - Move backward
Alt + c - Capitalize the word
Alt + d - Delete word
Alt + f - Move forward
Alt + l - Make word lowercase
Alt + n - Search the history forwards non-incremental
Alt + p - Search the history backwards non-incremental
Alt + r - Recall command
Alt + t - Move words around
Alt + u - Make word uppercase
Alt + back-space - Delete backward from cursor

----------------More Special Keybindings-------------------

Here "2T" means Press TAB twice

$ 2T - All available commands(common)
$ (string)2T - All available commands starting with (string)
$ /2T - Entire directory structure including Hidden one
$ 2T - Only Sub Dirs inside including Hidden one
$ *2T - Only Sub Dirs inside without Hidden one
$ ~2T - All Present Users on system from "/etc/passwd"
$ $2T - All Sys variables
$ @2T - Entries from "/etc/hosts"
$ =2T - Output like ls or dir

Abrindo o ultimo comando no vim
fc

Veja também:
Além dos atalhos acima segue a cópia do meu ~/.inputrc

2 comentários:

  1. Æ!!

    Legal cara!
    Eu estou usando set -o vi, portanto eu posso usar os atalhos do vim no bash ao invés dos atalhos padrão emacs =)

    Há braços

    ResponderExcluir
  2. Muito boas, Sergio!
    Valeu!

    Lex Aleksandre
    Google profile
    Facebook
    Twitter @aleksandre

    ResponderExcluir

Insira seu comentário - O mesmo será submetido à aprovação!

linux-cookbook

Grupos do Google
Participe do grupo linux-cookbook
E-mail:
Visitar este grupo