Adiciona texto à linha de comando via shell script

4

Eu tenho um script de shell que está abrindo terminais diferentes.

Depois de abrir os terminais, inicio manualmente diferentes aplicações nos terminais. Eu gostaria de automatizar isso adicionando texto (por exemplo, bin / binfile) às linhas de comando dos terminais através do shell script. O importante é que eu só quero inserir o texto, para que eu ainda tenha que pressionar enter nos terminais para iniciar os aplicativos depois de executar o script. Eu não quero executar os comandos automaticamente. Isso é possível?

    
por Simon 02.10.2014 / 10:38

2 respostas

1

Supondo que você esteja usando o bash, você pode se aproximar configurando um atalho readline para gerar o comando desejado em uma única tecla.

export INPUTRC='mktemp'
trap "rm -f $INPUTRC" EXIT
echo '"\eOP": "my command"' > $INPUTRC
xterm

INPUTRC é uma variável de ambiente usada pela readline. Ele tentará abrir o $ INPUTRC e ler a configuração dele.

A configuração readline "\eOP": "my command" liga a macro my command à tecla F1 (que em meus terminais aparece como a seqüência \eOP onde \e é o caractere de escape ASCII).

Agora, dentro do xterm, pressionar F1 produzirá my command .

O trap assegura que o arquivo de configuração temporário seja limpo assim que o terminal for fechado.

(O encanto de linha de leitura correto para ligação a F1 pode variar, portanto, talvez seja necessário usar algo diferente de \eOP . Se você já tiver um ~ / .inputrc, convém incluí-lo no arquivo temporário criado. )

Editar: com relação aos comentários abaixo, xfce4-terminal funciona para mim, com

export INPUTRC='mktemp'
trap "rm -f $INPUTRC" EXIT
echo '"\eOQ": "my command"' > $INPUTRC
xfce4-terminal

e usando F2 em vez de F1.

    
por 02.10.2014 / 16:22
0

Use um script de wrapper:

waitk.sh:

#!/bin/sh
printf "$*"
read k
exec "$@"

prefixos nos seus comandos

waitk.sh ls -l
    
por 02.10.2014 / 22:29