Screenとはどんなソフトでしょうか? Infoの説明では「仮想端末マネージャ(virtual terminal manager)」と なっています。Xをたちあげる前の、コンソール画面には 「仮想コンソール」ってのがありますね。 ALT+F?で画面切り替えるやつです。え?そんなものはない? それはいけません。すぐにscreenを入れましょう (^^; ともかく、あれと同じことを、1つの端末の中でやってしまおうというのが Screenのコンセプトです。
たとえば...
Screenの世界では仮想コンソールのことをWindowと呼ぶようです。
もちろん、Kterm以外の端末でも動きます。わたしはETermを使っています。 背景が透明になるのだけが楽しみで使ってるんですが、そろそろ自己満足にも 飽きたのでKtermに戻そうかなと思ってます。 それはともかく、 別にkon上でもかまわないし、日本語の表示で不自由してよいなら xtermや、普通にlogin時のコンソールで動かすこともできます。
% screenで起動します。設定ファイルにしたがってWindowが作成されます。
screen内で起動しているWindowが全て終了するとscreenも終了します (設定で変更可能)。ほかにも終了する方法がありますが後述します。
ヘルプを見ましょう。^T?で表示できます。
infoを見るともっとくわしくわかります。 そういや日本語訳計画はどうなったんだ〉わし (答え: 2%くらいやって 中断...)
しつこいですがWindowは仮想コンソールのことです。
Screenでは自由にWindowの数を増やしたり減らしたりすることができます。 具体的には、必要になったときにWindowを作り、 必要がなくなったらWindowを消す、といった使いかたをします。
たとえば、強烈にでかいプログラムをmakeしているとき、 あるいは、気絶しそうに長い.tex→.dviのコンパイルの最中に、 別のWindowで作業をしたくなったら、 「^Tc」と入力します。すると、新しいシェルが起動してその画面に切り替わります。 今まで見えていた画面は、もちろん見えなくなりますが、裏でしっかり 動いていますのでご心配なく。
また、screenの中で動いているシェルから
% screen コマンドラインとすると、新しいWindowを開いてコマンドを実行します(とても重要)
生成されたWindowにはそれぞれ番号がついています。 Windowとその番号の対応は^Twで 知ることができます。
0$ console 1*!$ azalea 2-$ tcsh 3$ tcshこの例では、4つのWindowが立ち上がっていて、0番が「console」、 1番が「azalea」、2番と3番が同じ名前の「tcsh」となっています。
Windowにタイトルをつけるにはscreenに-tオプションをつけて Windowを作成します。
% screen -t console tail -F /var/log/messages現在activeなWindowのタイトルを変更したいときは^TAとします。 「Set window's title to: 現在のタイトル」と出ますので 新しいタイトルを入力します。 Windowの切替には次のような方法があります。
なお、^Twで出てくるWindow一覧の、Window番号とタイトルの間にある 変な記号ですが、これらはそのWindowの状態などを示すシンボルとなっています。 とりあえず
/* bell.c gcc -o bell bell.c */ #include <stdio.h> int main(void) { printf("\a"); }なんていうのを作っておいて、
% make ; bell ←なんかすげーでかいアプリのmakeなんてしておくと、他のWindowで作業しているときもそれを 知らせてくれるわけです。
Windowが開いたときに起動したシェル(などのプログラム)が 終了するとそのWindowは閉じられます。
強制的に閉じたいときは^TKとします。
Window間でカット&ペーストができます。 手順はこんな感じです。
markkeys 'h=^B:l=^F:$=^E'という設定を.screenrcなどに書いておけば、カーソル移動に emacs風なキーバインドが使えてゴキゲン(死語)です。
2001年2月23日現在、最新バージョンは3.9.8です。
screenのWindowの中からscreenを呼び出すと新しいWindowを作ります。 これを使った応用などを紹介したいと思います。
w3mは テキストベースのWeb browserです。どのくらい優れているかは いろんな方のページで紹介されていますので省略...
さてとっても便利なw3mですが、Netscapeとかに比べると
w3mには外部ブラウザ起動の機能があります。こいつとscreenを組み合わせると...
keymap M EXTERN_LINK keymap M-M EXTERNといった設定があるのを確認してください。
#!/bin/sh screen w3m -o confirm_qq=0 $@こんな感じのスクリプト(w3m-remoteとか名前つけときます)を 作って、$HOME/.w3m/configに
extbrowser w3m-remoteなどと書いておくと、
#!/bin/sh screen wget -c $@といった感じのスクリプト(wget-remoteとか名前をつけときます)を 作って、$HOME/.w3m/configに
extbrowser2 wget-remoteなどを加えておくと、2 SHIFT + M でダウンロード用Windowを開くことができます。
#!/bin/sh mozilla-remote -remote OpenURL\($@,new-window\)などというスクリプトを書いて(netscape-remote)、$HOME/.w3m/configに
extbrowser3 /home/zinnia/bin/netscape-remoteなどを加えておくと、
そんなわけなので、私は
#!/bin/sh if [ -r $1 ]; then exec w3m -o confirm_qq=0 $1 fi echo $1: not found or access refused.といった感じのスクリプトをlessという名前で置いていたりします(^^;
さらに、I(VIEW_IMAGE)起動時にはdisplay(ImageMagick、URLを指定して 画像を表示できます)を裏で動かすようにhackしていますので、 「ページが表示されるまでの待ち時間」以外の待ち時間は基本的には ないようになりました(^^)v ←得意そうにすな
最初は上に書いた3つの機能をw3mのソースいじって実現しようと 考えていたんですが、いじってゆくうちにそんな余計なことをしなくても もともとある機能で実現できることに気付いてw3mにまた感動したりしました。
また、ダウンロードにはwgetを使う以外に、 Downloader for Xとか、 Ariaなどを 使うこともできます。これらのツールはDnDやCut&Pasteの他に コマンドラインからダウンロードの指示を送ることができますので、 wget-remoteを、
#!/bin/sh # Downloader for Xのとき nt $@ # Ariaのとき aria -g $@とすれば