ii

出自 ArchWiki

IRC it (ii)

一个极简的基于 FIFO 和文件系统的 IRC (互联网中继聊天) 客户端。它创建一个 IRC 目录树,包含服务器、频道和昵称目录。在每个目录中,都会创建一个 FIFO 输入文件和一个普通的输出文件。

安装

安装 iiAUR 软件包。

配置

ii 通过命令行选项进行配置。默认值为主目录 ~/irc 和昵称 $USER。这些值可以在运行时通过传递值给 ii 来更改

-s server
-p port
-u socket (-p option is ignored if this is set)
-i main.directory
-n nickname
-f realname
-k environmental.variable 

ii 使用环境变量来包含您的 IRC 密码 (例如,IIPASS="password"; -k IIPASS)。

使用

有关详细介绍,请参阅官方文档

推荐使用会话管理器,例如 abducotmux。它允许用户轻松断开连接和重新连接到会话。

要启动 ii,请运行

$ ii

另请参阅 ii(1)

附加功能

ii 仅作为服务器的客户端。将需要额外的应用程序来读取输出并将输入写入 ii。在每个子目录中,都会有一个输出文件 "out" 和一个输入文件 "in"。至少,可以使用以下命令监视输出文件:

$ tail -f out

以及以下命令监视输入:

$ echo "command/message" > in

另一个允许单个命令接受持续输入的选项是

$ cp /dev/stdin in

命令

ii 命令以斜杠开头,并且区分大小写。

命令 描述
/a message 标记为离开,带有可选消息
/j #channel password

/j nickname message

加入频道,带有可选密码;

打开与用户的私聊对话,带有可选的开场消息

/l message 离开频道,带有可选消息
/n nickname 更改昵称
/q message 退出 ii,带有可选消息
/t topic 设置频道主题

任何不是命令的内容都将发布到频道或服务器。因此,如果您需要 /who,只需按照 RFC:1459 中的描述,将 /WHO 写入 FIFO 给服务器。

SSL/TLS 加密

ii 不支持 传输层安全协议 (TLS),需要一个代理将其连接到 TLS 客户端。例如,可以使用 stunnel

/etc/stunnel/stunnel.conf
[irc.libera.chat]
accept = 127.0.0.1:<your-port>
connect = irc.libera.chat:6697

然后使用 -s localhost-p your-port 让 stunnel 将 ii 重定向到服务器的安全连接。

另一种选择是使用 socat 作为代理,ii 通过 UNIX 流套接字连接

$ socat UNIX-LISTEN:/tmp/irc.libera.chat OPENSSL:irc.libera.chat:6697
$ ii -s irc.libera.chat -u /tmp/irc.libera.chat

技巧与窍门

使用 sed 编辑输出

可以使用 Sed 编辑 tail -f 输出,使其更具可读性。例如

#!/bin/sh
tail -n 55 -f out | sed -u '/-\!-.*has/d;
                          s/<MyNick>/\x1b[32m&\x1b[0m/g;
                          s/\(> >\)\( .*\)/\1\x1b[33m\2\x1b[0m/;
                          s/http[^ >)]*/\x1b[31m&\x1b[0m/g;
                          s/[\"\$\`]/\\&/g;
                          s/\(^[0-9]\{10\}\)\( .*\)/date -d@\1 "+%Y.%m.%d %H.%M.%S""\2"/e'

在此示例中,sed 命令的第一部分隐藏(从命令输出中删除)join、part 和 quit;第二部分在您的昵称周围添加绿色颜色控制代码;第三部分对“highlights”执行相同的操作,颜色为黄色;第四部分对 URL 执行相同的操作,颜色为红色;倒数第二部分准备命令的输出,然后最后一部分将 UNIX 纪元时间戳替换为人类可读的日期。