Как я могу использовать расширение команды на `\ {\}` в `find -exec`?

Я действительно рекомендовал бы использовать сценарий оболочки. Чтобы подражать вызову cron notify-send, я подключился к своей системе с помощью ssh localhost. Вызов '/ usr / bin / notify-send "foo"' не сработал, и мне не повезло при добавлении DISPLAY =: 0.0 в строку. Вот что сработало:

DBUS_SESSION_BUS_ADDRESS="$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/`pgrep -u username cinnamon|head -1`/environ | sed 's/DBUS_SESSION_BUS_ADDRESS=//')" /usr/bin/notify-send "foo"

Это, мягко говоря, ОЧЕНЬ беспорядочно. Это чище.

#! /bin/bash

DBUS=$(pgrep -ou $1 cinnamon)
DBUS="$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$DBUS/environ | sed 's/DBUS_SESSION_BUS_ADDRESS=//')"

DBUS_SESSION_BUS_ADDRESS="$DBUS" /usr/bin/notify-send $2

И в cron:

*/1 * * * * /path/to/notify.sh user "help"

Обратите внимание, что бит корицы присутствует, потому что это оконный менеджер, который я использую.Вам, вероятно, придется заменить его на nautilus или что-то еще, что у вас есть в качестве оконного менеджера. У меня также есть пользователь, указанный в качестве первого аргумента, потому что это делает его более модульным позже, если вы хотите, чтобы это работало независимо от того, кто вошел в систему.

0
02.12.2018, 05:53
1 ответ

Вы заключаете его в команду sh -c

find /path/to/dir -type d -links 2 -exec sh -c 'stow -d "$(dirname "$1")" -t /home/t/bin "$(basename "$1")"' sh {} \;
3
28.01.2020, 02:31

Теги

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