Terminal: Repetindo o último argumento do comando anterior, usando o bang-dollar
O !$ ou bang-dollar é um daqueles atalhos que ajudam a economizar quilômetros de digitação.
A sintaxe comum a boa parte dos comandos que são executados no Terminal faz com que seja frequente encontrar situações em que o último argumento do comando anterior seja repetido no próximo comando, como nos exemplos a seguir:
ls -l sistema-3.8.2-pre
tar zcvf sistema-3.8.2-pre.tar.gz sistema-3.8.2-pre
mkdir projeto
cd projeto
cp example.conf wordpress.conf
nano -w wordpress.conf
ping -c1 servidor.com.br
ssh fulano@servidor.com.br
Trata-se de uma situação tão comum, que mereceu inúmeros atalhos e formas alternativas de ter de evitar a redigitação. Para quem já aprendeu, na semana passada, a usar o bang bang (!! ou dupla exclamação) para repetir um comando inteiro como argumento do próximo, provavelmente a alternativa mais simples de memorizar será o !$ (que, pela tradição tipográfica dos EUA, recebe o título de bang dollar).
O funcionamento do bang dollar é fácil de entender, pois simplesmente executa o novo comando substituindo o !$ pelo último parâmetro do comando anterior (mostrando antes, numa linha à parte, como ficou o comando após a substituição). Repetindo os exemplos acima:
ls -l sistema-3.8.2-pre
tar zcvf !$.tar.gz !$
mkdir projeto
cd !$
cp example.conf wordpress.conf
nano -w !$
ping -c1 servidor.com.br
ssh fulano@!$
Se você quiser ver o resultado da substituição antes de confirmar o novo comando, pressione ESC Control+E
(ou seja, primeiro a tecla ESC separadamente, depois Control e E ao mesmo tempo).
Uma alternativa um pouco diferente no mecanismo, mas que nos casos comuns tem o mesmo efeito (exceto pela ausência de impressão do comando expandido antes de executá-lo), é usar a variável no lugar da expansão !$.
Ao invés de inserir uma expansão ou variável, você também pode inserir na posição do cursor o último parâmetro do comando anterior usando um atalho de teclado. O ESC.
(ou seja, a tecla ESC seguida de um ponto) é um deles, e funciona na configuração default do Mac.
E já que você está memorizando expansões baseadas no ponto de exclamação, aqui vão mais duas:
!*
expande para o conjunto completo de parâmetros do comando anterior!:n
(onde n é um número) expande para o n-ésimo parâmetro do comando anterior. Por exemplo, !:3 é o terceiro parâmetro, !:5 é o quinto parâmetro, e assim por diante
Estes são apenas exemplos simples da expansão de parâmetros do shell Bash (default do Terminal do OS X) e de outros que adotam as mesmas convenções, mas também estão entre os mais úteis no dia-a-dia, e podem poupar bastante digitação. Aproveite!
(PS: Certamente voltaremos ao assunto dos atalhos do Terminal, mas se você quiser ir se adiantando, a documentação do Bash tem bastante informação interessante e atualizada sobre maneiras de economizar tempo e digitação ツ)
Comentar
Comentários arquivados