Попробуйте:
alias bw 'bjobs -w | awk '\''{print $7}'\'''
csh
цитирование болезненно.
Это должен быть подходящий awk-скрипт:
device=$( cat /proc/bus/input/devices |
awk '
/"ELAN0732:00 04F3:264C"/{ inside = 1 }
/Handlers=/ { if(match($0,"event([0-9]+)",group))event = group[1] }
/^$/ { if(inside && event!="")print "/dev/input/event" event
inside = 0; event = ""
}')
if [ -n "$device" ]
then sudo evtest --grab "$device" > /dev/null &
fi
Первая строка соответствует искомой строке и устанавливает переменную inside
, чтобы отметить, что мы находимся в правильной строфе. Следующая строка находит Handlers
и использует match(string, regexp, returnarray)
для поиска регулярного выражения event[0-9]+
и записывает цифры ()
в массив group
, а затем устанавливает переменную event
.
Наконец, мы сопоставляем пустую строку в конце каждой строфы (, включая последнюю ), и, если мы находимся внутри и имеем номер события, выводим путь к устройству, объединенный с номером события.
Если ваш awk использует POSIX, а не GNU, замените строку Handlers на
/Handlers=/{ if(split($0,part,"event"))event = part[2]+0 }
который разбивает строку на слово "событие",затем преобразует следующие символы в число.
Если приведенный выше сценарий записывается непосредственно на /etc/rc.local
, убедитесь, что вы запустили sudo chmod +x /etc/rc.local
, иначе он не будет выполняться.
&
в конце команды необходимо, чтобы Systemd не зависал при загрузке (, так как он ожидает выхода перед продолжением, и вместо этого нам нужно, чтобы он работал в течение всего времени безотказной работы ). /dev/null
пытается игнорировать стандартный вывод, который evtest
использует для сообщения об использовании сенсорного экрана, чтобы сэкономить память. Добавление /dev/null
может быть тривиальным, но не повредит.
О. Большое спасибо за этот вопрос, который на самом деле дает мне ответ о том, как отключить сенсорный экран. У меня вроде работает, пока вдруг не становится все баллистическим и много щелкает все на экране.
Принятое решение красивое, крутое и все такое, но я просто хотел что-то очень простое, что я действительно могу понять. Так что с обычной оболочкой может быть так:
sudo evtest --grab /dev/input/$(grep "SYNA2393" -A 5 /proc/bus/input/devices | grep "Handlers=" | cut -d" " -f 3)
Это более хрупкое решение, чем общепринятое, поэтому я предлагаю читателю использовать его, если только они не согласны с таким жестким кодированием.