Truques no Bash

By | January 15, 2009

Alguns truques para facilitar o seu dia-a-dia na linha de comando:

!$

Representa a última parte do último comando executado. Exemplo:

$ grep macarrao comidas.txt 
macarrao
$  cat !$
cat comidas.txt
arroz
feijao
batata frita
macarrao

Expansão automática

Expande automaticamente os valores entre chaves. Uma mão na roda para loops:

$ for i in {1..4}; do echo "i vale $i"; done
i vale 1
i vale 2
i vale 3
i vale 4

Também funciona com letras:

$ for i in {a..d}; do echo "i vale $i"; done
i vale a
i vale b
i vale c
i vale d

E pode ser útil em situações assim:

$ mkdir -p diretorio{a..c}/sub-diretorio{w..z}
$ find .
.
./diretorioc
./diretorioc/sub-diretoriow
./diretorioc/sub-diretoriox
./diretorioc/sub-diretorioz
./diretorioc/sub-diretorioy
./diretoriob
./diretoriob/sub-diretoriow
./diretoriob/sub-diretoriox
./diretoriob/sub-diretorioz
./diretoriob/sub-diretorioy
./diretorioa
./diretorioa/sub-diretoriow
./diretorioa/sub-diretoriox
./diretorioa/sub-diretorioz
./diretorioa/sub-diretorioy

^antigo^novo

Executa o último comando substituindo o valor antigo pelo novo. Exemplo:

$ cat /etb/lsb-release 
cat: /etb/lsb-release: No such file or directory
$ ^b^c
cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"

!!

Reexecuta o último comando. Útil quando você esqueceu algo, como o sudo na frente do comando. Exemplo:

$ whoami
user
$ sudo !!
sudo whoami
root

Mais truques e dicas aqui.

One thought on “Truques no Bash

  1. Silvio Fonseca

    Putz, to ficando enferrujado mesmo, não lembrava metade das coisas que você postou… Não conhecia o !$, eu sempre uso o $_ que é quase a mesma coisa…

    silvio@rootnote:~$ ls aaabbb
    aaabbb
    silvio@rootnote:~$ echo $_
    aaabbb
    silvio@rootnote:~$ echo !$
    echo $_
    aaabbb

    Detalhe que o $_ aparece no histórico, o !$ não:

    silvio@rootnote:~$ history | tail -n 3
    514 ls aaabbb
    515 echo $_
    516 history | tail -n 3

Comments are closed.