.sh para executar o comando do terminal

1

Isso provavelmente é insanamente simples, mas eu sou meio que novo nisso e não tenho ideia do que estou fazendo. Muito simplesmente, eu tenho o MouseON.sh que, quando executado, quero que ele abra um terminal, execute um comando e feche o terminal que ele abriu. (sim eu sei que parece redundante, mas para os meus propósitos isso é o que eu preciso). Eu pesquisei e olhei em volta deste site, mas não consigo encontrar algo que eu possa entender devido à noobery.

Eu tenho:

#!/bin/sh
gnome terminal -x sh -c xinput set-prop 10 "Device Enabled" 0

Que abre e fecha bem o terminal, mas na verdade não executa 'xinput set-prop 10 "Dispositivo ativado" 0'

Sugestões?

Além disso, sim, estou ciente de que é chamado de "MouseON" e defini-lo como 0 seria desligar o mouse, eu tenho que definir para isso para fins de teste.

Também sei que existem outras maneiras de ligar e desligar o mouse, mas, novamente, para os meus propósitos, é disso que preciso.

Obrigado antecipadamente.

    
por TechnoWolf 25.01.2016 / 16:05

1 resposta

2

De man gnome-terminal :

       -x, --execute
                 Execute the remainder of the command line inside the  termi‐
                 nal.

Quando sh -c xinput set-prop 10 "Device Enabled" 0 é avaliado para ser executado, sh é interpretado como o executável a ser executado e os argumentos para sh são divididos em espaços; então xinput é interpretado como o argumento para a opção sh -c e set-prop , 10 , Device Enabled e 0 são interpretados como opções / argumentos para sh e não como opções / argumentos para xinput .

A solução está citando o comando xinput usando aspas simples / duplas para evitar que o comando seja dividido em espaços e para torná-lo interpretado por sh como um argumento inteiro para a opção -c :

gnome terminal -x sh -c 'xinput set-prop 10 "Device Enabled" 0'

ou

gnome terminal -x sh -c "xinput set-prop 10 \"Device Enabled\" 0"
    
por kos 27.01.2016 / 10:35