Deixe-me dar um pouco de fundo para a minha pergunta. Estou usando um leitor de RSS de terminal newsboat
que permite o uso de macros para operar em links. Por exemplo, tenho uma macro em execução cd ~/videos && youtube-dl %u
, que fará o download de um vídeo do youtube para o ~/videos
. No entanto, a saída de youtube-dl
será impressa em meu terminal até que o download seja concluído e, por enquanto, não posso continuar usando newsboat
.
Eu estou querendo saber como eu poderia frasear o comando para que ele seja executado "em outro lugar" para que eu possa continuar usando imediatamente o terminal a partir do qual ele é executado.
Se você não precisar da saída, redirecione-a para /dev/null
caso contrário, você pode redirecionar para um arquivo:
E como você executa o comando de outro aplicativo e deseja usar seu leitor de notícias imediatamente, talvez queira executar o comando em segundo plano. Não tenho certeza de como isso funciona neste newsboat, mas em um shell você pode enviar programas para o backround com &
Para executar o comando silenciosamente em segundo plano, que "sobreviverá" mesmo que o terminal seja fechado depois, use
screen
no modo desanexado:para reconectar
screen
com o comando executando executePara desconectar a tela reconectada, pressione
CTRL+A+D
.Sem
screen
você deve executar seu comando comnohup
, assim o processo será executado se o terminal for fechado posteriormente, como oscreen
utilitário:Sua pergunta começa perguntando uma coisa, mas depois vai perguntar sobre outra coisa.
A primeira coisa que você pergunta é descartar a saída. Isso é feito facilmente com redirecionamento:
A segunda coisa que você pergunta é executar um comando "em outro lugar" para que você possa continuar usando o terminal. Isso é chamado de "Controle de Trabalho".
Você pode executar qualquer comando em segundo plano usando o
&
separador de comandos do shell. Compare o comportamento dos dois comandos a seguir:Se um trabalho já estiver em execução e você precisar usar o terminal para outras coisas e quiser que o trabalho seja concluído, você pode usar Ctrl- Zpara suspender o trabalho e
bg
instruí-lo a continuar em segundo plano:Este link tem uma leitura bastante boa sobre controle de trabalho com
bash
.