好吧,我正在编写一个 shell 脚本来打开 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