A maneira mais fácil de pensar, já que a linha em questão é um comando, é:
'$easy_install 2>&1 | grep sudo'
Os backticks ou $(…)
pegam a saída de um pipe de comando e o executam como se você o tivesse digitado, retornando a saída.
Por favor, note que este comando não funcionará se você estiver perdendo sudo
e tentando instalá-lo. Mas como isso é obviamente o Ubuntu, sudo
está normalmente disponível. Para evitar isso, você pode tentar sua segunda opção:
'$easy_install 2>&1 | tail -n 1'
Tente evitar o uso de tail -1
, que está sendo substituído pelo formulário padrão tail -n 1
. Eu acho isso difícil, mas eu não gosto de avisos de depreciação. :)
Aviso : se $easy_install
existir e você não obtiver esse tipo de saída, qualquer um desses comandos é uma segurança massiva risco. Você pode acabar executando coisas arbitrárias. Você pode se proteger sendo mais extravagante:
'$easy_install 2>&1 >/dev/null | grep '^sudo apt-get install''
Isso descarta stdout
e só executará qualquer coisa que comece com sudo apt-get install
, o que limita muito as coisas, mas é consideravelmente mais irritante do que digitar sudo apt-get install $package
.