Хорошо, я пишу скрипт оболочки, чтобы открыть Irssi и затем автоматически подключиться к freenode. Мне следует редактировать файл ~/.irssi/config или есть способ сымитировать ввод мной /connect irc.freenode.net? Я использовал echo, send и expect, но это не сработало. Вот код, который у меня есть на данный момент.
irssi
echo "/connect irc.freenode.net"
решение1
irssi предоставляет -c
переключатель, который позволяет указать сервер для подключения при запуске приложения.Страница пользователя irssi:
-c, --connect=SERVER
connects to SERVER
Итак, вы можете просто использовать один из этих вариантов:
$ irssi -c irc.freenode.net
$ irssi --connect=irc.freenode.net
$ irssi --connect irc.freenode.net
Причина, по которой echo
не работает, в том, что он не подключен к стандартному вводу irssi. В основном, происходит следующее:
- Запускаете irssi, подключаетесь к серверу, немного общаетесь, выходите.
- После закрытия irssi (завершения его процесса) ваш
echo
текст будет напечатан.
Тот же результат будет, если вы используете:
$ irssi ; echo "Hello"
Теперь, что касается expect
этого, это, вероятно, связано с тем, что irssi — клиент на основе ncurses. Поскольку ncurses переопределяет способ обработки ввода и вывода, весьма вероятно, что он expect
в любом случае не сможет взаимодействовать с процессом. Кроме того, ожидать нечего stdout
, так как irssi отправляет много вещей в этом потоке:
- Синий заголовок.
- Несколько пустых строк, некоторые с текстом, если вы его использовали
-c
(журнал подключений). - Еще одна синяя линия с текстом внутри.
- Подсказка.
- ...
И не только:
[(status)] _
На что вы могли бы ответить:
/connect irc.freenode.net