Screenを使う その1: 基本操作

Screenの基礎

Screenとはどんなソフトでしょうか? Infoの説明では「仮想端末マネージャ(virtual terminal manager)」と なっています。Xをたちあげる前の、コンソール画面には 「仮想コンソール」ってのがありますね。 ALT+F?で画面切り替えるやつです。え?そんなものはない? それはいけません。すぐにscreenを入れましょう (^^; ともかく、あれと同じことを、1つの端末の中でやってしまおうというのが Screenのコンセプトです。

たとえば...

といったことが可能となります。さらに、最近のバージョンでは、 ということも可能となっています。これは、 vncを思い浮かべてもらうと イメージがつかみやすいでしょう。具体的な使いかたについては後述します。

Screenの世界では仮想コンソールのことをWindowと呼ぶようです。

もちろん、Kterm以外の端末でも動きます。わたしはETermを使っています。 背景が透明になるのだけが楽しみで使ってるんですが、そろそろ自己満足にも 飽きたのでKtermに戻そうかなと思ってます。 それはともかく、 別にkon上でもかまわないし、日本語の表示で不自由してよいなら xtermや、普通にlogin時のコンソールで動かすこともできます。

基本操作

起動

% screen
で起動します。設定ファイルにしたがってWindowが作成されます。

終了

screen内で起動しているWindowが全て終了するとscreenも終了します (設定で変更可能)。ほかにも終了する方法がありますが後述します。

困ったときには

ヘルプを見ましょう。^T?で表示できます。

infoを見るともっとくわしくわかります。 そういや日本語訳計画はどうなったんだ〉わし (答え: 2%くらいやって 中断...)

Windowを開く

しつこいですがWindowは仮想コンソールのことです。

Screenでは自由にWindowの数を増やしたり減らしたりすることができます。 具体的には、必要になったときにWindowを作り、 必要がなくなったらWindowを消す、といった使いかたをします。

たとえば、強烈にでかいプログラムをmakeしているとき、 あるいは、気絶しそうに長い.tex→.dviのコンパイルの最中に、 別のWindowで作業をしたくなったら、 「^Tc」と入力します。すると、新しいシェルが起動してその画面に切り替わります。 今まで見えていた画面は、もちろん見えなくなりますが、裏でしっかり 動いていますのでご心配なく。

また、screenの中で動いているシェルから

% screen コマンドライン
とすると、新しいWindowを開いてコマンドを実行します(とても重要)

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の切替には次のような方法があります。 ^T^Tで2つのWindowを行ったり来たりできます。

なお、^Twで出てくるWindow一覧の、Window番号とタイトルの間にある 変な記号ですが、これらはそのWindowの状態などを示すシンボルとなっています。 とりあえず

を覚えておけば充分でしょう。もっと詳しく知りたいときはinfo見てみてください。 !について捕捉しておきます。 現在activeではないWindowでBell characterが送られると、 「Bell in window ?(Window番号)」というメッセージが出ますが、 このときに^Twすれば該当するWindow番号のところに!がついています。 例えば...
/* bell.c
 gcc -o bell bell.c
*/
#include <stdio.h>

int main(void)
{
        printf("\a");

}
なんていうのを作っておいて、
% make ; bell   ←なんかすげーでかいアプリのmake
なんてしておくと、他のWindowで作業しているときもそれを 知らせてくれるわけです。

Windowを閉じる

Windowが開いたときに起動したシェル(などのプログラム)が 終了するとそのWindowは閉じられます。

強制的に閉じたいときは^TKとします。

カット&ペースト

Window間でカット&ペーストができます。 手順はこんな感じです。

ここまでがコピーの手順です。 ペーストするときは、挿入したい位置にカーソルを持ってって ^T]とすればOKです。
markkeys 'h=^B:l=^F:$=^E'
という設定を.screenrcなどに書いておけば、カーソル移動に emacs風なキーバインドが使えてゴキゲン(死語)です。

Getting Screen

2001年2月23日現在、最新バージョンは3.9.8です。

アプリケーションからscreenを使う

screenのWindowの中からscreenを呼び出すと新しいWindowを作ります。 これを使った応用などを紹介したいと思います。

w3m

w3mは テキストベースのWeb browserです。どのくらい優れているかは いろんな方のページで紹介されていますので省略...

さてとっても便利なw3mですが、Netscapeとかに比べると

といった機能がないため、2つのページを同時に見るのがちと面倒だったり、 ダウンロード中は他のページにアクセスしたりできなかったり、 不便を覚えます。

w3mには外部ブラウザ起動の機能があります。こいつとscreenを組み合わせると...

といったふうに待ち時間を最小にしてネットサーフィン(笑)が 楽しめます。しかもこれらはページャとして使ってるときにも 使えます。

そんなわけなので、私は

#!/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 $@
とすれば といった利点があると思います。

Downloader for X
Downloader for Xの使用例。「コンソールソケットから...」というのが w3mからの指示です。


戻る
Zinnia (zinnia@risky-safety.org)
このWebコンテンツ(ここから辿れるもの)に対する コメントのメールは許可なく公開することがあります。