Como compor o próximo comando enquanto o anterior está sendo executado?

2

Enquanto trabalho no bash (geralmente com git), o que acontece comigo é que eu inicio algum comando e enquanto esse comando está em execução (o que pode demorar um pouco), quero começar a compor o próximo comando para executar imediatamente , sem esperar que o comando anterior seja concluído. Se eu terminar de compor o próximo comando enquanto o comando anterior ainda estiver em execução, o próximo comando deve aguardar que o anterior termine antes de realmente começar.

As opções inadequadas que encontrei até agora são:

  1. Basta começar a escrever o próximo comando.

    O problema com isso é que eu estou escrevendo cego: eu posso digitar o próximo comando, mas não vejo o que estou digitando. Isso é especialmente problemático quando se trata de conclusão de tabulação, porque ele se comporta de maneira "imprevisível" (por exemplo, é difícil adivinhar se cd s Tab expandirá para cd src ou não).

  2. Execute o comando anterior no plano de fundo usando & .

    Isso significa que a saída do comando anterior se intercala com o comando que estou escrevendo. O resultado final é que, se o comando anterior é produzido com bastante frequência, é quase tão ruim quanto a opção 1.

  3. Ocultar a saída do comando anterior usando > /dev/null

    O problema com isso é que a saída do comando anterior é geralmente importante, especialmente no caso de falha.

Para reafirmar, existe alguma maneira de obter um ambiente em que:

  • Eu posso escrever o próximo comando enquanto o comando anterior executa
  • Eu posso ver o comando que estou escrevendo
  • conclusão de tabulação funciona normalmente
  • A saída
  • do comando anterior é visível
por svick 06.11.2016 / 21:54

2 respostas

2

Você tem duas opções:

  • O utilitário screen , embora não seja fornecido com algumas distribuições do Linux. Não está incluído por padrão no Solaris (Unix).

    Por exemplo, no Centos:

    yum install screen
    

    Veja um breve tutorial sobre o uso do utilitário na tela.

  • O comando nohup ; redirecione stdout e stderr de acordo:

    Exemplo:

    nohup command & 
    
por 07.11.2016 / 03:10
1

Você pode jogar o comando atualmente em execução no plano de fundo com:

  • Ctrl-Z para suspender o processo e
  • bg para retomar em segundo plano.

Então você tem seu prompt de volta e você pode começar a digitar o próximo comando.

A stdout e stderr do comando anterior ainda irão para o seu terminal.

    
por 07.11.2016 / 19:28