Решение не для всех, но у меня наушники с одной пуговицей. По-видимому, некоторые из этих простых кнопок наушников используют своего рода сигнальный механизм микрофона, который проверяет, является ли вход микрофона «высоким» (, см. этот пост и этот пост). Используя дерзость, я смог убедиться, что нажатие на кнопку порождало характерный пик, недостижимый речью (, хотя я не пытался кричать! ). Покопавшись в Интернете, я нашел следующее решение, используя метод soxrec
:
#!/usr/bin/sh
while true; do
rec -n stat trim 0.5 2>&1 | awk '/^Maximum amplitude/ && $3 > 0.89' | grep -q 'M' && playerctl play-pause
done
playerctl
— это программа, управляющая воспроизведением мультимедиа. .5
в коде указывает разрешение микрофона. Вы можете поиграть с этим значением, если хотите реализовать двойное касание. 0.89
указывает порог нажатия кнопки. (мой в основном равен 1 при нажатии)
Это больше о программировании в целом, но я бы сказал, что повторение требует функций:
make_link() {
Enlace=$2
file=$1
if [ -L "${Enlace}" ] ; then
if [ -e "${Enlace}" ] ; then
echo "Enlace Funcional"
else
echo "Enlace Roto"
fi
elif [ -e "${Enlace}" ] ; then
echo "No es un Enlace"
else
echo "No existe"
ln -s "$PWD" "$Enlace"
fi
}
make_link "$PWD" "../../memstick/PSP/SAVEDATA/ULES01439"
make_link "$PWD/PSP2Conf.ini" "../../memstick/PSP/SYSTEM/ULES01439_ppsspp.ini"
...
При такой настройке вы можете использовать массив или что-то еще для хранения данных вместо жестко запрограммированного списка, как указано выше. Хотя здесь необходима оценка $PWD
во время выполнения, это не так просто, как могло бы быть.
Я не вижу большой пользы от всего сценария.
Если вы не добавите-f
(принудительное )или-b
(резервное копирование ), ln -s
завершится сбоем с ошибкой «Файл существует», поэтому вы можете просто запустить и дождаться сбоя.
enlace="../../memstick/PSP/SAVEDATA/ULES01439"
ln -s "$PWD" "$enlace"
Если вам нужна дополнительная информация о типе файла, если он существует, вы можете добавить file "$enlace"
, например.:
ln -s "$PWD" "$enlace" || file "$enlace"