2007年8月20日星期一

用 screen + irssi 上 irc 之鄉民版教學 (含Q&A)

最近身旁許多在上 irc 的朋友都問我哪個 irc client 比較好用
其實,只要問過我的,而且又是 unix like 的系統使用者時
基本上都會被我推薦 irssi 這個 command mode 的純文字 irc 程式
(啥?不知道啥是 irc ? Internet Relay Chat 的縮寫,其他請洽 GoogleWiki
然後如果還有 server 的朋友,更是會被我力推 screen + irssi 的組合
好處是,可以遠端持續掛著 irc ,到哪邊都可以 ssh 進去繼續看 irc log
這樣真的很方便,也不用擔心因為沒開自己的電腦,就看不到別人的對話或別人要留給自己的訊息
不過跟太多的朋友推薦了 screen + irssi 後,卻發現一直回來問我問題
原因是... man 寫的陽春到不行,然後就吵著要鄉民教學
所以這篇文章就這麼被誕生了,也順便當我的備忘錄吧 :P
以下是針對我操作時會遇到的問題整理一下

irssi 的程式安裝我就不詳細講了
apt-get or yum 裡面可以直接打撈到

先在這邊釐清第一次使用 screen + irssi 上 irc 的朋友們觀念
請先搞清楚說遇到的問題跟操作,該是由 screen 還是由 irssi 的程式部份來處理
或者本身只是 irc 上面的指令操作罷了
screen 只是方便讓使用者可以利用 server 不關機的優勢,使 irssi 可以連續開著不中斷
然後下次再透過 screen 來接軌回到掛著的 irssi 然後繼續熱血 irc 這樣子
所以,這樣看下面的簡介操作後比較不會搞不懂到底發生啥狀況,如果請教朋友也比較能問到問題處
以下例子皆以 irssi 0.8.10 或以上版本,經實驗都可順利執行
且都以在 FreeNode 上的 OrzLab channel 為例子

(如果不掛 screen 者,這一段請直接跳過)
首先 ssh login 到 server 後
請輸入

screen -RD
-R Reattach if possible, otherwise start a new session.
-D (-r) Detach and logout remote (and reattach here).

然後會進入到新開啟的 screen ,並且 screen 會自動開啟一個新的 window 讓我們使用
接下來直接輸入
irssi
就會在 screen 底下的第一個視窗執行 irssi 這隻程式

如果沒有要掛著 screen 執行 irssi 的朋友
那直接輸入
irssi
就可以直接執行 irssi 這隻程式

進入 irssi 後
直接在提示輸入字元處輸入
/connect irc_server
就會直接連到該個 irc server 了
例如
/connect irc.freenode.net
這樣就會直接連接到 freenode 的 irc server 上
此時,可以先在這邊修改自己要在該 irc server 上的暱稱
如果要修改,則輸入以下格式
/nick you_want_nickname
例如當我輸入
/nick lzy
時,那我顯示出來的暱稱將會是「lzy」的字樣
( irssi 預設的暱稱會是 login 的使用者名稱)
搞定暱稱後,接著我們就可以加入其他頻道了
只要輸入
/j #channel_name
就可以直接加入了,例如
/j #orzlab
這樣就完成加入 #orzlab 這個 irc channel 了
如果該 irc channel 需要 key/password 的話
則輸入:
/j #channel_name password
如果要離開單一個 irc channel 的話
則直接輸入
/wc
就可以離開這個 irc 頻道了
若是要離開一個 irc server 的連線,則輸入
/disconnect irc_server_name
夠簡單了吧?



剛剛是教如何連線而已
現在則是教一些常用的熱鍵與功能
先來看圖說故事一下


上面的這張圖,我們在
[Act: 1,2,4,6,9,10]
這邊發現了幾個不一樣的標示數字
Act 這一欄位會提示你在第幾編號的 channel 上對話狀況,而你還沒切換到該 irc channel 上觀看
灰色一般體的是代表有人登入或登出此 irc channel(如 1,9,10)
白色粗體的是代表有人正在此 irc channel 上談話(如 4,6)
灰色粗體的則是有人在對話中提起你的名字或者呼叫你,總之就是有出現你的名字(如 2)
這是基本識別
再來是知道哪個 channel 有啥狀況後
就是切換到該 irc channel 上觀看了
Alt + 1~0 對應 1~10 的 irc channel 編號
Alt + q~p 對應 11~20 的 irc channel 編號
Ctrl + n/p 可切換 上/下 一個 irc channel
然後按鍵盤上的 PageUP/PageDn 可以直接切換 上/下 頁訊息


如果發現有編碼上的問題,需要轉編碼的話
則可以輸入
/recode add #channel_name code_type
例如要把 orzlab 的 utf8 格式加入,則輸入
/recode add #orzlab utf8
就可以加入此頻道的編碼格式了
然後輸入
/recode
就可以看到加入的編碼列表
(註:因 /recode add 會寫入到設定檔裡,所以僅需要寫入一次即可)


Q&A TIME
Q:如何同時有連接多個IRC server呢?又該怎樣切換不同IRC server來加入該server的IRC channel呢?
A:
請直接再下一次 /connect irc_server 就可以再連接一個新的 irc server ,然後按Alt + 1切換到第一個的特殊頻道上,再按 Ctrl + x來切換目前要下達指令的 IRC server名稱。


Q:如何查看該頻道的所有人呢?
A:
請下達 /who 的 irc 指令即可,然後也是一樣按 Alt + 1 切換到第一個伺服器狀態頻道上觀看


Q:如何查看單一網友的基本連線資料呢?
A:
請下達 /whois nickname 的 irc 指令即可,然後也是一樣按 Alt + 1 切換到第一個伺服器狀態頻道上觀看


Q:如何傳送私人訊息到指定的朋友暱稱呢?
A:
請下達 /msg nickname 即可開啟一個名為指定暱稱的訊息頻道,一樣用 alt + 1~0/q~p 來選擇(注意:有些 irc server 會限制此功能,傳訊前請先確認是否有權限)。


Q:已經使用上面所講的方式 screen + irssi 了,那我離開時,是否得下達任何參數或指令?又下次 ssh login 後,需要打什麼指令呢?
A:
為了簡化登入與記憶上的方面,採用 -RD 的參數,所以每次要離開 irssi 時,直接關閉該視窗就好,不需下達任何參數或指令。然後下一次 ssh login 後,只要打 screen -RD 這樣就可以接軌回上次開啟的 irssi 了。


Q:如果遠端連線到 big5 的主機掛 screen + irssi 時,那 client 端是 utf8 時,編碼的亂碼問題如何處理?
A:
首先,先處理 screen 的編碼問題,從 utf8 端要檢視 big5 server 時,先 Ctrl + a,然後輸入 :encoding big5 utf8 ,把從 server 將送出的 big5 編碼先轉成 utf8 後再送出,然後輸入 "/recode" 觀看頻道編碼是否指定正確,照上述設定,理應能順利顯示。


Q:如果不小心按到 Ctrl + z 或鍵盤上的 Pause 時, irssi 被 suspend 了,如何恢復?
A:
請直接輸入 fg 後按 enter ,就可以把剛剛被 suspend 的 irssi 給喚醒。


Q:如果我要關閉一個 irssi ,該如何下達指令?
A:
請直接關閉開啟 irssi 的 screen ,請按 Ctrl + k 來關閉 screen window ,然後可以再重新開啟一個全新的 irssi 出來。


Q:要如何自動儲存 irc log ?
A:
在需要 auto irc log 的 irc channel 上輸入 /SET autolog ON,即可打開 autolog 功能。


Q:要如何指定當開啟 irssi 後,自動連接 irc server 與自動連接 irc channel ?
A:
直接看例子會比較快,先假設我要讓他自動用 lzy 的暱稱連接到 Freenode 的 irc server 上的 #orzlab
/network add -nick lzy Freenode
/server add -auto -network Freenode irc.freenode.net 7000
/channel add -auto #orzlab Freenode

如果是需要 key/password 的 irc channel 的話,則把最後一行改為
/channel add -auto #irc_channel_name irc_server_name password
也就是直接把密碼接在後面就可以了
如果需要自動對註冊的暱稱進行認證登入的話(設口令為abcde):
/network add -autosendcmd "/^msg nickserv ident abcde;wait 2000" Freenode



Q:如何讓 irssi 發出有人提起自己暱稱時的訊息警告(或響鈴)?
A:
在 irssi 裡輸入以下指令,讓 irssi 適時發出聲音訊號:
/set beep_when_window_active ON
/set beep_when_away ON
/set beep_msg_level MSGS NOTICES DCC DCCMSGS HILIGHT
/set bell_beeps ON

在 screen 中按下 Ctrl +a , Ctrl + g 的按鍵,讓 screen 把 irssi 發出來的聲音訊號傳出來
或參考絕地大濕的 blog 一文 <會響的 PuTTY + screen + irssi>


Q:如何更換 irssi 的 theme ?
A:
把抓好的 theme (可從官網撈喜歡的),然後複製該 theme 的檔案到 ~/.irssi/ 資料夾路徑,並下達 /SET theme theme_name 來更改該 theme 。


Q:如何自訂 irssi 的 irc 訊息熱鍵?
A:
因為設定比較繁雜,故只提供官網網址,讓有興趣的朋友可以自己去翻閱。




提供幾個額外補充的網站,沒標示語言者,皆為中文
irc 指令介紹 (英文)
irssi startup (英文)
screen 基本觀念與操作介紹

2 則留言:

contagion 提到...

about remote big5 server, try

screen -UDR

Jarod Lee 提到...

非常感谢您的整理,最近也在使用这个工具,转载了。不介意吧:)