Я думаю, это потому, что вы закрываете одинарную кавычку, используемую для команда bash -c параметр.
Итак, вы выполняете: bash
с первым аргументом -c
, вторым аргументом sed 1s_
, третьим аргументом _o_ <(echo $ 1 )
и так далее. Примерно так:
$ bash -c 'sed 1s_' '_o_ <(echo $1)'
Третий аргумент ( '_ o_ <(echo $ 1)'
) передается в bash
, а не в sed
.
Чтобы исправить вашу команду, вы должны использовать двойные кавычки для аргумента sed
:
$ find . -maxdepth 1 -name "* *" -exec bash -c 'sed "1s_ _o_" <(echo $1)' h {} \;
Если вы знаете, какой пользователь вошел в систему на какой виртуальной консоли, вы можете использовать write
. Например, предположим, что пользователь dirk
вошел в систему на tty2
, вы можете сделать
echo 'You have a message' | write dirk tty2
, и пользователь увидит сообщение (с двумя дополнительными строками). Пользователь виртуальной консоли должен разрешить получение сообщений с mesg y
, если вы не отправляете сообщение как root IIRC. Пользователь сразу видит это сообщение, независимо от того, вызывает он команду или нет.
Альтернативой может быть подключение к оболочке пользователя (возможно с использованием подсказок PS
) путем настройки .profile
и т. Д. Для активной проверки сообщений в каком-либо файле и т. Д. .