Это, наверное, безумно просто, но я новичок в этом и понятия не имею, что я делаю. Очень просто, у меня есть MouseON.sh, что при запуске я хочу, чтобы он открыл терминал, выполнил команду, а затем закрыл открывшийся терминал. (да, я знаю, что это кажется излишним, но для моих целей это то, что мне нужно). Я гуглил и осматривал этот сайт, но не могу найти то, что могу понять из-за нубери.
У меня есть:
#!/bin/sh
gnome terminal -x sh -c xinput set-prop 10 "Device Enabled" 0
Каким образом открывается и закрывается терминал, но на самом деле не запускается 'xinput set-prop 10 "Device Enabled" 0'
Предложения? [ 114]
Кроме того, да, я знаю, что он называется «MouseON», и установка его в 0 отключит мышь, я установил ее на это для целей тестирования.
Я также знаю, что есть и другие способы включения и выключения мыши, но опять же для моих целей это то, что мне нужно.
Спасибо заранее.
От man gnome-terminal
:
-x, --execute
Execute the remainder of the command line inside the termi‐
nal.
Когда sh -c xinput set-prop 10 "Device Enabled" 0
оценен, чтобы выполняться, sh
интерпретируется как исполняемый файл, который будет выполнен, и аргументы sh
splitted на пробелах; так xinput
intepreted как аргумент sh
-c
опция и set-prop
, 10
, Device Enabled
и 0
интерпретируются как опции / аргументы sh
, и не как опции / аргументы xinput
.
Решение заключает в кавычки xinput
команда, использующая единственный / двойные кавычки, чтобы препятствовать тому команда быть splitted на пробелах и заставить его интерпретироваться sh
в целом аргумент -c
опция:
gnome terminal -x sh -c 'xinput set-prop 10 "Device Enabled" 0'
или
gnome terminal -x sh -c "xinput set-prop 10 \"Device Enabled\" 0"