Несмотря на лучшие общие решения, вот причина, по которой это не удалось в этом скрипте:
FINDOPTS="-type f -mtime +3 -exec rm -rf {} \;"
^
Параметр find
ожидает символ ;
. Поскольку ;
на самом деле (не случайно)также конец ограничителя команды оболочки, его необходимо экранировать в команде оболочки, поэтому обычно набирается \;
. Если теперь вы поместите этот символ в переменную, он никогда не будет оцениваться оболочкой как разделитель. Таким образом, его нельзя экранировать.
Воспроизведение ошибки без переменной:
$ find /etc -exec ls "\;"
find: missing argument to `-exec'
Так что просто замените строку на:
FINDOPTS="-type f -mtime +3 -exec rm -rf {} ;"
Было предложено Я использую dbus-send
для открытия Spotify из URI, однако я обнаружил ограничения, характерные для Spotify API (открытие URI перезапустило трек вместо только подтягивание страница исполнителя ). На самом деле это ошибка Spotify .
В целом, наиболее подходящей стратегией для WM, такого как i3, является проверка того, запущен ли процесс, а затем условное выделение окна или запуск приложения по мере необходимости. Это то, на чем я остановился.
В i3 вы можете сфокусировать окно с помощью i3-msg '[class="Spotify"] focus'
. Используйте xprop
для идентификации метаинформации, чтобы выбрать окно.