sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.

Как отследить была ли нажата клавиша при выполнении скрипта Bash?

Имеем простейший скрипт на баше (запуск из контекстного меню файломанагера Caja )
нужно прямо в нём ,скрипте,проверить условия
если ничего не выбрано/выделено - выход
если была выделена директория и нажат Ctrl_Right выполнить команду1 (сменить владельца рекурсивно)
если была выделена директория/файл выполнить команду2 (сменить владельца только для выделенного)
иначе выполнить команду3
выход

P.S.
вот чего я с горем пополам нагородил ,НО затык в этой строке
if [[ echo "$key" == "key[105]=down" ]] заменил обхитрил :)
но что то я уже не могу сообразить ,почему не меняет владельца,что не так?через консоль всё норм.

#!/bin/sh

path="$CAJA_SCRIPT_SELECTED_FILE_PATHS"
user='root'

# нахожу id активной клавы
idkb=$(xinput list | grep -Po 'AT Translated Set 2 keyboard\s+id=\d+' | grep -Po '\d+$')

# и присваиваю переменной key значение нажатой кнопки
#"key[105]=down" - нажата , "key[105]=up" - НЕ нажата .
key=$(xinput --query-state $idkb | grep -Po '105]=.*' )

# если в момент  выполнения скрипта была нажата клавиша Ctrl_Right 
#т.е предыдущая строка/команда вернула значение "key[105]=down"
#ПОЧЕМУ ТО ОШИБКА ,ПОЭТОМУ ПРИШЛОСЬ СДЕЛАТЬ ТАК
if [ $key != "105]=up" ]

then
# выводим сообщение и выполняем команду рекурсивного смены пользователя
sudo chown -R $user  $path && notify-send "рекурсивно"

else
# если нет , т.е. вернуло (должно вернуть "key[105]=up" ) ,
# тогда меняем пользователя только для выделенного  файла/директории
sudo chown $user $path  && notify-send "один" 
fi
# ПО БОЛЬШОМУ СЧЁТУ , ВСЕ СООБЩЕНИЯ В ЭТОМ КОДЕ,НУЖНЫ  ТОЛЬКО ДЛЯ ОТЛАДКИ
notify-send -t 3000 " владельцем nуть: $path  стал $user  кейкод  клавиши: $key" ;
  • Вопрос задан
  • 1007 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы