A coisa certa a fazer aqui é configurar o bash para solicitar a instalação, conforme explicado em Resposta do SamK . Vou responder estritamente de uma perspectiva de uso do shell.
Primeiro, o texto que você está tentando pegar está no erro padrão do comando, mas um pipe redireciona a saída padrão , então você precisa redirecionar stderr para stdout.
htop 2>&1 | tail -1
Para usar a saída de um comando como parte de uma linha de comando, use substituição de comando .
$(htop 2>&1 | tail -1)
O resultado da substituição do comando é dividido em palavras e cada palavra é interpretada como um padrão curinga. Aqui isso acontece para fazer a coisa certa: esta é uma linha de comando com palavras separadas por espaços, e não há caracteres curinga.
Para avaliar uma string como um comando shell, use eval
. Para tratar o resultado do comando como uma string em vez de uma lista de padrões de caracteres curinga, coloque-o entre aspas duplas.
eval "$(htop 2>&1 | tail -1)"
É claro que, antes de avaliar um comando shell como esse, verifique se ele realmente é o que você deseja executar.