Showing posts with label screen. Show all posts
Showing posts with label screen. Show all posts

Monday, September 26, 2011

Wednesday, August 27, 2008

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

最近身旁許多在上 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)」

Tuesday, July 15, 2008

screen的配置文件

~/.screenrc.html
 1 #
 2 # This is an example for the global screenrc file.
 3 # You may want to install this file as /usr/local/etc/screenrc.
 4 # Check config.h for the exact location.
 5 #
 6 # Flaws of termcap and standard settings are done here.
 7 #Wed 21 Sep 2011 12:20:15 AM CST
 8 
 9 #startup_message off
10 
11 #defflow on # will force screen to process ^S/^Q
12 
13 deflogin on
14 #autodetach off
15 
16 vbell on
17 vbell_msg "   Wuff  ----  Wuff!!  "
18 
19 # all termcap entries are now duplicated as terminfo entries.
20 # only difference should be the slightly modified syntax, and check for
21 # terminfo entries, that are already corected in the database.
22 # 
23 # G0    we have a SEMI-GRAPHICS-CHARACTER-MODE
24 # WS    this sequence resizes our window.
25 # cs    this sequence changes the scrollregion
26 # hs@   we have no hardware statusline. screen will only believe that
27 #       there is a hardware status line if hs,ts,fs,ds are all set.
28 # ts    to statusline
29 # fs    from statusline
30 # ds    delete statusline
31 # al    add one line
32 # AL    add multiple lines
33 # dl    delete one line
34 # DL    delete multiple lines
35 # ic    insert one char (space)
36 # IC    insert multiple chars
37 # nx    terminal uses xon/xoff
38 
39 # 256color
40 terminfo rxvt-unicode 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
41 
42 # 这是配置那个tab bar
43 hardstatus alwayslastline
44 hardstatus string "%{=b}%{b}%-w%{.BW}%10>[%n %t]%{-}%+w%< %=%{G}%C%A, %Y-%m-%d"
45 #caption always "%{=u kC} %= %-w%L>%{=b G}[:%n %t:]%{-}%52<%+w %L=" termcapinfo xterm|rxvt ti@:te@
46 # screen里面的所有进程退出,screen就自动退出
47 autodetach on # default: on
48 # 退出vim/nano之后自动刷新屏幕
49 altscreen on
50 # 启动等待,显示版本
51 msgwait 2 version
52 # 启动信息
53 startup_message off # default: on
54 # 启用beep报错
55 #vbell off
56 # 默认的shell,不设置的话就是bash
57 # shell zsh
58 ## Keybindings ##
59 # C-a改为C-l
60 #escape ^L^L
61 # F10改标题
62 bindkey -k k; title
63 # F11左边的tab
64 bindkey -k F1 prev
65 # F12右边的tab
66 bindkey -k F2 next
67 
68 #remove some stupid / dangerous key bindings
69 bind ^k
70 #bind L
71 bind ^\
72 #make them better
73 bind \\ quit
74 bind K kill
75 bind I login on
76 bind O login off
77 bind } history
78 

urxvt配置

~/.Xdefaults.html
 1 ! vim: fdm=marker
 2 ! 修改了这个文件,必须$xrdb .Xdefaults让配置生效
 3 
 4 !! RXVT setting /*{{{*/
 5 !! Color
 6 !URxvt.background:black
 7 URxvt.background: [0]#000000
 8 !URxvt.foreground:gray60
 9 !URxvt.foreground:white
10 URxvt.foreground: #ffffff
11 !URxvt.geometry: 85x30+180+200
12 URxvt.colorBD:yellow
13 URxvt.colorUL:green
14 URxvt.cursorColor:red3
15 URxvt.color0:black
16 URxvt.color1:red3
17 URxvt.color2:springgreen
18 URxvt.color3:wheat3
19 URxvt.color4:navy
20 URxvt.color5:magenta4
21 URxvt.color6:steelblue1
22 URxvt.color7:gray85
23 URxvt.color8:gray10
24 URxvt.color9:orangered2
25 URxvt.color10:chartreuse3
26 URxvt.color11:lightgoldenrod2
27 URxvt.color12:skyblue1
28 URxvt.color13:pink1
29 URxvt.color14:lightblue1
30 URxvt.underlineColor: yellow
31 !urxvt typical
32 URxvt.cutchars: "`\"()';@?=,*<>[]{|}"
33 !Scroll
34 URxvt.scrollBar: true
35 URxvt.scrollBar_right: true
36 URxvt.scrollBar_floating: true
37 URxvt.scrollstyle: plain
38 URxvt.saveLines: 8192
39 !滚屏设置
40 URxvt.mouseWheelScrollPage:true
41 URxvt.scrollTtyoutput: False
42 URxvt.scrollWithBuffer: true
43 URxvt.scrollTtyKeypress: true
44 !cursor blink
45 URxvt.cursorBlink:true
46 !边框
47 URxvt.borderLess: false
48 !fonts
49 URxvt.font: \
50     xft:DejaVu Sans Mono:size=8, \
51     xft:WenQuanYi MicroHei Mono:pixelsize=12
52 URxvt.boldfont: \
53     xft:DejaVu Sans Mono:size=8, \
54     xft:WenQuanYi MicroHei Mono:pixelsize=12
55 !Xft.dpi:96
56 !URxvt.font:xft:WenQuanYi Micro Hei Mono:size=10:style=Regular:antialias=true,xft:WenQuanYi Micro Hei Mono:size=9:style=Regular:antialias=true
57 !URxvt.boldfont:xft:WenQuanYi Micro Hei Mono:size=10:style=BOld:antialias=true,xft:WenQuanYi Micro Hei Mono:size=9:style=Bold:antialias=true
58 !URxvt.font:xft:Dejavu Sans Mono-10,xft:WenQuanYi Bitmap Song-10
59 !URxvt.boldFont:xft:Dejavu Sans Mono-10:Bold,xft:WenQuanYi Bitmap Song-10:Bold
60 
61 !italicFont and boldItalicFont undefined
62 !URxvt.font: xft:Luxi Mono:regular:antialias=True:pixelsize=15,
63 !URxvt.font: xft:Monaco:medium:autohint=True:size=10, \
64 !                xft:DejaVu Sans Mono:book:autohint=True:size=10, \
65 !                xft:wenquanyi bitmap song:medium:pixelsize=15:antialias=True
66 !URxvt.boldFont: xft:Luxi Mono:bold:antialias=True:pixelsize=15,
67 !URxvt.boldFont: xft:Monaco:bold:autohint=True:size=10, \
68 !                xft:DejaVu Sans Mono:bold:autohint=True:size=10, \
69 !                xft:wenquanyi bitmap song:bold:pixelsize=15:antialias=True
70 
71 
72 !Input Method
73 URxvt.inputMethod: ibus
74 !URxvt.preeditType: OverTheSpot
75 !URxvt.imFont: WenQuanYi Bitmap Song
76 !Open URLs in firefox tabbar
77 !!支持tab
78 ! tab切换:shift+left/shift+right
79 ! 移动tab:ctrl+left/ctrl+right
80 ! 新建tab:shift+down
81 URxvt.perl-ext-common:  default,matcher,tabbed
82 URxvt.urlLauncher:      /usr/bin/firefox
83 URxvt.matcher.button:   1
84 
85 /*}}}*/