Abrindo um arquivo com o programa em segundo plano a partir do shell

4

O comando para iniciar um programa, digamos, evince, do bash shell em background é

evince &

Mas e se eu quiser abrir algum arquivo com o evince em segundo plano? Nem evince myfile.pdf & nem evince & myfile.pdf funciona como esperado: a primeira gera algo como [2] 5356 , mas na próxima linha a linha retorna bloqueada; o segundo abre uma istância vazia de evidência.

Então, qual sintaxe posso usar?

    
por BowPark 10.04.2014 / 20:19

2 respostas

4

Às vezes, quando você inicia um programa, ele imprime alguma mensagem. Se você iniciá-lo em segundo plano, o programa pode travar até trazê-lo de volta para o primeiro plano, para que ele possa exibir sua mensagem. A solução é redirecionar stdout e stderr para que o programa possa continuar sendo executado em segundo plano. Uma maneira de fazer isso é:

evince myfile.pdf >~/evince.errs 2>&1 &

O texto acima cria um arquivo no seu diretório pessoal com a mensagem que o evince queria exibir.

Se você está convencido de que as mensagens do evince não são importantes, você pode descartá-las sem criar um arquivo:

evince myfile.pdf >/dev/null 2>&1 &

Depois de executar qualquer um dos comandos acima, o shell deve produzir uma mensagem como [1] 1234 e, em seguida, um prompt de shell deve aparecer. Como Graeme sugere, se o prompt do shell não aparecer, tente pressionar enter novamente.

    
por 10.04.2014 / 20:52
5
evince myfile.pdf

CTRL + Z

bg

Isso abre o programa, suspende-o e faz o plano de fundo.

Ou:

( evince myfile.pdf ) &

Abriria evince em (subshell) e originaria (subshell) . É um pouco estranho que simplesmente:

evince myfile.pdf &

não funciona porque é para mim.

Você pode querer:

echo $-

E verifique seus parâmetros de controle de trabalho. Eu recomendo:

set -b

se você ainda não estiver usando. Faça:

man set

para mais informações. Ou veja minha outra resposta aqui .

    
por 10.04.2014 / 20:24