Eu tentei este teste simples
ping [SOME IP] &;ls
esperando que a saída do ping se sobreponha à listagem.
Em vez disso, recebi um erro:
bash: erro de sintaxe próximo ao token inesperado `;'
Não ajuda adicionar espaços. Se o ponto e vírgula for escapado, o primeiro comando inicia, então erro
;: comando não encontrado
Quase funciona colocar o ping entre colchetes
(ping [SOME IP] &);ls
As ls
corridas até a conclusão, depois as ping
largadas. Eu poderia conseguir isso mais facilmente digitando
ls;ping ...
É possível iniciar dois processos juntos, quando o primeiro (ou ambos) estão em segundo plano?
Eles não podem ser executados juntos porque fazem a mesma coisa neste contexto: ambos
&
e;
agem como terminadores de lista indicando o fim de um comando. Você pode iniciar um novo comando depois de qualquer um deles, então não há necessidade de usar ambos.Então, para enviar um comando para segundo plano e iniciar outro imediatamente, basta fazer:
É isso.
&;
não é uma sintaxe bash válida. o&
é usado para executar um comando em segundo plano, o;
é usado para separar comandos.&
já termina o comando, um;
imediatamente após está incorretoPor que ; após & retornou um erro de token inesperado no bash?
Erro de sintaxe próximo ao token inesperado `;' ao executar um comando no Bash
Você pode usar simples:
ping [SOME IP] & ls
ou com uma subcamada
(ping [SOME IP] &) && ls
Os parênteses realmente colocam o comando em um subshell?
Inicie subshells com atribuição e aguarde por isso
Isso também deve funcionar com agrupamento:
{ ls & ping [SOME IP]; }
executar conjunto de comandos em grupo por {} vs ()
Diferença entre parênteses e chaves em terminal?