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.
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