Bash - Referência a trechos de comandos anteriores
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 17 de março de 2014
É bastante comum executarmos um comando que requer privilégios de super usuário (root) usando a shell de login de usuário comum.
Precisamos então redigitar todo o comando, precedendo-o do comando sudo
,
para então executar o comando com os privilégios requeridos. A shell bash
nos oferece um recurso que nos permite fazer isto com menos esforço:
$ apt-get install package E: Não foi possível abrir arquivo de trava /var/lib/dpkg/lock - open (13: Permissão negada) E: Não foi possível criar acesso exclusivo ao directório de administração (/var/lib/dpkg/), é root? $ sudo !! sudo apt-get install package [sudo] password for queiroz:
A diretiva "!!
"" representa todo o comando executado anteriormente. No
exemplo acima este recurso para completar um comando, mas podemos usá-lo
também para repetir o comando anterior.
Explorando um pouco mais este conceito, a diretiva "!^
"" assume o valor
do primeiro argumento do comando anterior. Tomando novamente por base
o comando "apt-get install package
" temos:
$ !^ $ apt-get
E da mesma forma, a diretiva !$ assume o valor do último argumento do comando anterior:
$ !$ $ package
Estes recursos são particularmente úteis quando temos que digitar trechos longos, como caminhos de diretórios ou arquivos com muitos caracteres.