O Bash está repleto de inúmeros truques que parecem muito inteligentes no início,
mas depois acabam não sendo tão práticos ou ergonômicos.
Tenho experimentado alguns,
tentando me forçar a usar coisas novas,
mesmo que elas não sejam fáceis no início.
Entre os muitos truques que tentei memorizar,
um que sobreviveu muito bem foi o lançamento de história com !$
e <kbd> ESC. </kbd>
Se você digitar !$
na linha de comando,
ele será substituído pelo último argumento do comando anterior.
Por exemplo, encontro-me com muita frequência neste tipo de situação:
svn status /long/path/somewhere/else
svn revert -R /long/path/somewhere/else
svn update /long/path/somewhere/else
svn log -l3 /long/path/somewhere/else
Eu faço esse tipo de coisa várias vezes por dia,
não necessariamente com comandos do Subversion.
Embora o preenchimento da guia ajude a inserir caminhos rapidamente,
muitas vezes leva várias paradas de tabulação para fazer isso, o
que ainda é uma dor para reinserir um longo caminho.
!$
simplifica muito isso:
svn status /long/path/somewhere/else
svn revert -R !$
svn update !$
svn log -l3 !$
Eu estava relutante em aprender isso porque tinha uma solução alternativa com a qual estava muito acostumado:
- Seta <kbd> para cima </kbd> para trazer de volta ao comando anterior
- <kbd> Control w </kbd> para copiar o argumento do caminho
- <kbd> Control c </kbd> para cancelar o comando
- Digite o novo comando, por exemplo como acima
svn revert -R
- <kbd> Control y </kbd> para colar o argumento do caminho
Admito que isso parece muito ruim agora, em retrospecto.
!$
é relativamente fácil de lembrar, porque !
é a chave comum para comandos relacionados ao histórico e $
significa “o fim” nas expressões regulares.
Da mesma forma, !^
seria substituído pelo primeiro argumento no comando anterior e ^
significa “o começo” nas expressões regulares.
De alguma forma, não preciso de !^
muito na prática.
Há também !*
, que é substituído por todos os argumentos do comando anterior, mas não pelo comando em si.
Você pode usar toda a linha de comando anterior !!
.
Uma desvantagem é que você não verá seu valor até que execute o comando. Portanto, se você quiser editá-lo, não pode, o que pode ser irritante. Nesse caso, você pode usar <kbd> ESC. </kbd> em seu lugar. Isso irá colar o último argumento imediatamente, para que você possa vê-lo e editá-lo. Gosto mais da ideia , mas pressionar a tecla <kbd> ESC </kbd> é, de alguma forma, menos ergonômico para mim. Talvez eu só precise me acostumar com isso.!$
!$