Tuesday, December 28, 2010

Power Session with Screen No.2

Терминалийн олон цонхтой ажилладаг хүнд бол screen хамгийн догь таарах байх. Цонхноос цонхонд шилжих, copy+paste хийх, текст хайх зэрэг нь үнэхээр гарын дор. Өөрийн ашигладаг аргачлалаа хуваалцъя.

Screen цонхон дотор таабууд нээх боломжтой. Өнгө будаг, харагдац мэтээр нэмэлт тохиргоог бүрэн хийдэг. Үүнийг .screenrc файлд байршуулна. .vimrc файлаар Vim-ийн анхдагч араншинг тодорхойлдог шиг.

screen дотор хэд хэдэн тааб нээхэд нэр нь 0 bash | 1 bash | 2 bash мэтээр харагдах вий. Аль таабад нь юу байгаа нь мэдэгдэхгүй жаахан төвөгтэй. Ctrl + a; Shift + a коммандаар таабын нэрийг солих боломжтой. Энэ мэтээр дараахь 3 цонхыг нэрлэсэн байна гэж саная:

0 log | 1 emacs | 2 test/spec

Ctrl + a; 2 түлхүүрээр test/spec цонх руу, Ctrl + a; 0 -оор лог урсаж байгаа цонх руу үсрэх нь. Таабыг дараалан шилжиж байж сая зорьсон газраа ирдэгийн дэргэд бол том дэвшил.

Програм бичих бүрт screen тааб нээх, нэрлэх комманд цохихоос жаахан төвөгшөөж байгаа бол нь доорхи жижиг скриптийг .profile, эсхүл .bashrc файлдаа хуулаарай. Хэрэглэгч логин хийх бүрт $HOME/.railsdev файлыг үүсгэх боловч, shell-тэй холбоотой бүх тохиргоо нэг дор байх юм, өөрөөр хэлбэл засварыг нэг л файлд хийнэ гэсэн үг. За тэгээд төстэй байдлаар янзан бүрийн workspace үүсгэж болно. Доорхи жишээний хувьд терминаль дээр railsdev гэсэн комманд цохиход миний өмнө 0 server | 1 shell | 2 coding | 3 irb | 4 dbconsole гэсэн тааб бүхий screen програм нээгдэх нь.


Зураг 1. 5 тааб бүхий workspace үүссэн байдал

Файлын агуулга:

===== $HOME/.bashrc =====

cat <<END > $HOME/.railsdev
source $HOME/.screenrc
screen -t server
screen -t shell
screen -t coding
screen -t irb
screen -t dbconsole
END

function railsdev {
screen -S railsdev -c $HOME/.railsdev
}

==== $HOME/.screenrc ====

defencoding utf8
hardstatus on
hardstatus alwayslastline
hardstatus string "%{= wk} %-w%{=b dk} %n %t %{-}%+w %= [%H] %m/%d %c%{-}"
bind s colon "screen ssh"
defscrollback 1024

attrcolor b ".I"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
defbce "on"
term xterm-256color


Эрхэмээгийн бичсэн "Power Session with Screen" постыг заавал уншаарай. Сисадминууд, connection over ssh ашигладаг хүмүүст ихээ хэрэгтэй эд. Удалгүй хэн нэгэн нь Power Session with Screen No.3-г бичих байх аа гэж найдаж байна.

Уг постыг бичих санаа Google Buzz дээр өрнөсөн энэ хэлэлцүүлгээс үүдэлтэй болно. Нэг харчихаарай, хэрэгтэй зүйл нэмэгдсэн байх вий.

Update: Доорхи .screenrc файлаар screen маань cygwin дээр асуудалгүй ажиллах нь.


$ cat .screenrc
# Change scrollback to 10000 lines
defscrollback 10000

# status line at the bottom
hardstatus on
hardstatus alwayslastline
hardstatus string "screen %n (%t)%? [%h]%?"
caption always '%{yb} %H %{k}|%L=%= %{w}%?%-Lw%45L>%?%{=b bR}[%{W}%n%f %t%?(%u)%?%{=b bR}]%{= bw}%?%+Lw%?%?%=%-30= %{k}|%{Y}%l%{k}|%{=b C} %m/%d %c %{W}'