Preencher linha de comando do script

0

Eu tenho um script PHP que passa por muita complicação e, no final, produz um comando para o usuário rodar. Agora, imprime o comando e depois sai. O usuário tem que copiar o comando e colá-lo para executá-lo. Como o comando PHP está sendo executado na linha de comando, seria mais fácil para o usuário se o script PHP conseguisse colocar o comando na linha de comando. O usuário pode simplesmente pressionar enter. (Sim - é um requisito que um humano execute o comando ou eu apenas executei o comando de dentro do script.)

Eu tentei usar o xclip para copiar o comando para a área de transferência. Isso trava. Eu usei exec e sistema para executá-lo. O comando a ser executado está no comando $ e eu usei:

exec("echo \"$command\" | xclip");

Com exec e system, ele trava até eu ctrl-C e não há nada na área de transferência.

UPDATE Descobri que, se can pipe xclip para / dev / null no comando, ele não trava. Eu posso então adicioná-lo à área de transferência do usuário e ele pode executá-lo usando ctrl + shift + v

exec("echo \"$command\" | xclip -sel clip -i > /dev/null");

Eu tentei envolver a coisa toda em scripts complicados na linha de comando, diminuindo a última linha de saída e tentando colá-la na linha de comando. Eu posso obtê-lo para imprimir o comando, mas não na linha de comando. Ele sempre imprime o comando e, em seguida, a linha de comando aparece abaixo dele.

Estou usando o BASH para a linha de comando. Portanto, qualquer solução deve funcionar no shell bash - supondo que exista uma solução.

    
por kainaw 07.01.2016 / 20:55

1 resposta

0

Não exatamente pressionando enter, mas não muito mais difícil - o comando

history -s "command to put in history"

Adicionará a linha de comando dada no histórico bash. Você pode então simplesmente usar [seta para cima] [enter] para recuperar e executar o comando injetado.

(Eu não tenho certeza se você poderia executar isso diretamente do PHP, ou se você precisaria envolver o script PHP em um script bash, mas isso deve ser possível)

    
por 07.01.2016 / 22:51