2007年8月27日 星期一

教學:透過screen + irssi使用IRC

最近身旁許多在上 IRC (Internet Relay Chat)的朋友都問我哪個IRC client 比較好用?其實,只要問過我的,而且又是UNIX-like的系統使用者時,基本上都會被我推薦irssi這個command mode的純文字IRC程式。若有server可用的朋友們,更是會被我力推screen + irssi的組合。好處是,可以遠端持續掛著IRC,到哪邊都可以ssh進去繼續看IRC log,這樣真的很方便,也不用擔心因為沒開自己的電腦,就看不到別人的對話或別人要留給自己的訊息。

以下是針對irssi這軟體所寫的簡易基本介紹與使用和一些需要使用到IRC與GNU screen的基本指令,如需IRC或screen的其他更詳細指令與資料,文末會補上相關連結,如有不足,歡迎補充。

irssi的程式安裝不贅述,可由apt-get或yum等工具自套件庫裡面找尋並安裝。

先在這邊建立第一次使用screen + irssi操作IRC的朋友們觀念,確定遇到的問題跟操作,該是由screen還是由irssi的程式部份來處理,或者本身只是IRC上的指令操作罷了。screen只是方便讓使用者可以利用server不關機的優勢,讓irssi可以連續開著不中斷,使得下次再透過screen來接軌回到上次開啟還未被關閉的irssi來繼續IRC這樣子。所以,這樣看下面的簡介操作後比較不會搞混狀況,如果請教朋友也比較能問到問題處。

以下例子皆以irssi 0.8.10或以上版本,經實驗都可順利執行,且都以在FreeNode上的#orzlab IRC 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(即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的UTF-8格式加入,則輸入
/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 會限制此功能,傳訊前請先確認是否有權限,如FreeNode)。
Q:已使用上面所講的方式操作screen + irssi ,那我離開時,是否得下達任何參數或指令?又下次ssh login 後,需要打什麼指令呢?
A:
為了簡化登入與記憶上的方面,採用-RD的參數,所以每次要離開irssi時,直接關閉該視窗就好,不需下達任何參數或指令。然後下一次ssh login後,只要打screen -RD 這樣就可以接軌回上次開啟的irssi了。

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

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

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

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發出來的聲音訊號傳出來
或參考Jedi的blog一文「會響的 PuTTY + screen + irssi
Q:如何更換irssi的theme ?
A:
把抓好的 theme(可從官網選擇偏好的),然後複製該theme的檔案到~/.irssi/路徑,並下達/SET theme theme_name來更改該 theme 。

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

提供幾個額外補充的網站,沒標示語言者,皆為中文
※本文另有較鄉民版本:「用 screen + irssi 上 irc 之鄉民版教學 (含Q&A)

2 則留言:

匿名 提到...

看頻道裡的人我習慣用 /n
雖然沒有那麼清楚(ip, host ...)
可是比較方便喔 :D

jserv 提到...

關於編碼處理,可參見: http://www.jeffhung.net/blog/articles/jeffhung/742/