Como executar um comando em outro terminal já aberto? [duplicado]

4

É possível executar um comando em outro terminal aberto? Eu sei que posso redirecionar a saída de um comando em outro terminal. Por exemplo:

ls >/dev/pts/x

Onde x pode ser obtido executando tty no terminal de destino. Mas o comando é executado no terminal atual. Não é isso que eu quero.

Para esclarecer meu objetivo real, quero enviar um comando para cada terminal aberto, para alterar o tema de cores sem ter que reabrir todos os terminais.

    
por DBLouis 28.10.2018 / 09:54

1 resposta

1

Você pode enviar fugas de cor / cursor para um terminal simplesmente escrevendo para /dev/pts/N ou /dev/ttyN ; Por exemplo, se /dev/pts/5 for um xterm, você poderá definir o plano de fundo para vermelho em qualquer lugar com printf %b '\e]11;#ff0000\a' > /dev/pts/5 (claro, você precisa escrever permissões para /dev/pts/5 ).

Existe uma pequena chance de que a execução de tal comando possa interrugar mal com outros escapes enviados pelo (s) programa (s) em execução no terminal, mas no pior dos casos isso apenas resultará em um terminal embaralhado.

Para o problema mais geral de executar um programa em outro terminal / sessão, a única maneira que posso pensar que é possível é seqüestrar um processo em execução nesse terminal e bifurcar + exec o programa de dentro dele. Exemplo:

gdb -p PID -batch -ex 'p system("ls")'

Isso fica muito mais envolvido se o programa tiver que ser lido no terminal; antes do exec, o processo terá que ser adicionado ao grupo de processos em primeiro plano. E, claro, o processo seqüestrado pode não gostar de ter filhos inesperados;)

    
por 29.10.2018 / 12:04