Экранирование для строк оболочки — сложная задача. Попробуйте:
bind '"\es":"ssh -t localhost \"echo \\\"hi\\\"; echo \\\"bye\\\"\""'
После выполнения вышеуказанной команды нажатие клавиши Esc -должно привести к следующему тексту в командной строке:
ssh -t localhost "echo \"hi\"; echo \"bye\""
Это будет работать правильно. При выполнении он выдает результат:
hi
bye
Connection to localhost closed.
Проблема заключалась в том, что \\"
интерпретируется как одиночная обратная косая черта, за которой следует активная двойная -кавычка оболочки -. Вам нужно экранировать двойную кавычку -, чтобы она была неактивной. Таким образом \\\"
.
Не уверен, что существует простое решение (, поэтому, возможно, стоит подумать о запуске приложений по умолчанию в подробном режиме ).
Вот предложение, которое делает хотя бы часть того, что вы хотите.Сервисный модуль, показанный ниже, запускает приложение в обычном режиме (или ExecStart=
), если приложение работает нормально. Если по какой-либо причине приложение не запускается, служба запускает вторую попытку (ExecStopPost=
)в подробном режиме.
[Unit]
Description=verbose-start-on-failure Service
After=app.service
[Service]
RemainAfterExit=yes
ExecStart=/home/pi/exampleApp
ExecStopPost=/home/pi/exampleApp -V
[Install]
WantedBy=app.service
Однако, если приложение запущено успешно, но по какой-то причине позже происходит сбой, этот сервисный модуль не перезапустит его автоматически (добавление PartOf=
зависимости не сработает ).