Ubuntu Weekly Recipe

第19回あえてターミナルを使う(2):作業環境としてのターミナルw3m, screenなどの利用

前回に引き続き、ターミナルを利用してデスクトップをより便利に利用するためのレシピを紹介します。今回はターミナル環境で利用するアプリケーションの紹介です。

これまでターミナル環境を使わずにUbuntuを利用してきた方にとっては、ターミナルは「よく分からないコマンドを入力して操作する、何か上級者向けの環境」のように位置づけられてしまっていると思います。コマンドライン中心の操作が基本である、というのは事実なのですが、ターミナル環境はけして難しくありません。むしろCPUやメモリなどのリソースを消費せず、高速に動作する便利な環境として使えるものです。

これまでターミナルを利用してきていない方は、この機会にターミナルの便利さを知っていただければ幸いです。

gnome-terminalの色と透過

ターミナルを本格的に使い始める前に、もう一つ設定を検討してみましょう。

それは、⁠gnome-terminalの見た目を変える」ことです。gnome-terminalの設定は[編集⁠⁠→⁠プロファイル]で編集したいプロファイルを選択して[編集]をクリックすることで行えます。

図1 プロファイルの編集
図1 プロファイルの編集

色や外見を変更したところで、本質的には動作はまったく同じなのですが、ターミナルの使い勝手は表示される文字色・背景色の組み合わせによっても大きく左右されます。筆者は黒背景+白文字(もしくは緑文字か橙文字)にし、わずかに透過するように設定しています。文字色はその日の気分で使い分けています。

透過設定(プロファイルの「効果」タブにある⁠透過画像⁠設定)は必須ではありませんが、このあたりは利用しているモニタの発色特性や個人の好みに左右されますので、徐々に好みの設定を追求していくことをお勧めします。

なお、第15回で紹介したウィジェットレイヤにターミナルを表示させる場合などは、白背景のままでは黒背景にすることはほぼ必須になります。

テキストベースのWebブラウザ――w3m

ターミナル環境の便利さを端的に知ることができるアプリケーションの一つが、w3m(⁠⁠WWW-wo-Miru⁠⁠)です。これはFirefoxやInternet Explorerなどと同じようなWebブラウザですが、ターミナル上で動作します。

以下はhttp://gihyo.jp/をw3mで表示させた状態です。通常のWebブラウザで見た場合と比べても、それほど不自然さはないと思います。

図2 w3mでgihyo.jp
図2 w3mでgihyo.jp

インストールは次のように行います。

$ sudo apt-get update
$ sudo apt-get install w3m

w3mにはいくつかの派生バージョンが存在します。代表的なものはw3mmeeで、これもUbuntuパッケージになっています[1]⁠。

$ sudo apt-get update
$ sudo apt-get install w3mmee

インストール後は、以下のようにコマンドに続けて見たいURLを入力して起動します。図2と同じような画面が表示されるはずです。

$ w3m http://gihyo.jp/

起動後、以下の操作でブラウズすることができます。ハイパーリンクにカーソルを合わせた状態で[Enter]でリンクをたどっていくこともできます。カーソル移動などの基本的な操作は、bashの(Emacsの)ものとほぼ同様で、⁠Ctrl]+[n]で次の行、などといった操作が割り当てられています。

キーアサインのうち、特に重要なものの直感的ではないものは以下の通りです。

  • [U]……URLを指定して開く(一般的なブラウザのアドレスバー相当)
  • [s]……バッファ一覧を表示する
  • [B]……1ページ戻る
  • [R]……リロード

これら以外の操作については、⁠H]を入力し、ヘルプ表示で確認してください。

w3mでGmailへアクセスする

w3mはJavascriptをサポートしていませんので、AJAXを利用したサイトは利用できません。ただし、AJAXを利用したサイトの代表例であるGmailは、⁠簡易HTMLで表示する」ことでJavascriptを利用しない環境でも動作するようになっているため、w3mから利用することができます。

が、w3mを用いてGmail(http://mail.google.com/)を表示させようとする場合、ログイン画面まではたどり着けるものの、ログイン後に以下の図3のような画面になってしまうはずです。

図3 Gmailへログインできない
図3 Gmailへログインできない

w3mからGmailを利用する場合、次の操作でログインが可能です。

まず、通常通りhttp://mail.google.com/へアクセスし、ログインします。

ログインすると図3の画面になりますので、⁠U]を押し、URL Gotoに再度http://mail.google.com/と入力します。この時のみ、必ず「http」を指定してください⁠⁠。こうすることで、図4のような画面が表示されるはずです。

図4 w3mでGmailへログイン
図4 w3mでGmailへログイン

ここで「Gmail を Javascript を使わない簡易 HTML で表示するには、ここをクリックしてください。」というリンクをたどることでGmailにアクセスできます。

図5 w3mでGmailを表示
図5 w3mでGmailを表示

screen

デスクトップ環境でターミナルを利用していく場合、複数の作業を平行して行いたいことがあります。たとえばw3mを起動した状態でvimやEmacsなどでメモを取る、といった作業です。このように複数の作業を行う場合、通常であれば作業の数だけターミナルを起動することになります。数枚程度であれば特に問題なく利用していくことができますが、あまりにも数が多くなってくるとターミナルのウインドウ切り替えだけで煩雑になってしまいます。

このような場合、GNU screenを利用するのが良いでしょう。通常、screenはデフォルトでインストールされていますが、もし利用できない場合はscreenパッケージをインストールしてください。

まず起動する前に、最低限の設定を行いましょう。screenの設定は~/.screenrcファイルに設定を記述することで行います。以下の設定を~/.screenrcに記述してください。

startup_message off
autodetach on
hardstatus alwayslastline "%w"
defscrollback 3000

この状態でscreenコマンドを実行すると、画面の下に「0* bash」といった表示が現れるはずです。

図6 screen起動後
図6 screen起動後

この状態で、⁠Ctrl]+[a⁠⁠→⁠Ctrl]+[c]と入力してみてください。画面下部の表示が「0 bash 1* bash」に変わったのではないでしょうか。これだけでは意味がありませんので、ターミナルの切り替えを試してみましょう。

ターミナルが切り替わったことを確認するため、そのままw3m http://gihyo.jp/として、gihyo.jpのトップページを起動してみましょう。

この状態で、⁠Ctrl]+[a⁠⁠→⁠Ctrl]+[a]と操作してみてください。最初の(screenを起動した直後の)画面に戻るはずです。さらにもう一度[Ctrl]+[a⁠⁠→⁠Ctrl]+[a]と操作することで、w3mが起動した画面に戻ることができるでしょう。⁠Ctrl]+[a⁠⁠→⁠Ctrl]+[c]を押して新しく画面を生成した場合、切り替えは[Ctrl]+[a⁠⁠→⁠Ctrl]+[p][Ctrl]+[a⁠⁠→⁠Ctrl]+[n]で戻る/進むを使い分けることになります。

このように、screenは複数のターミナルを擬似的に切り替えることができます。

デタッチ

さらに、screenには「デタッチ」という機能もあります。

今開いているターミナルをそのまま閉じてしまい、新しくターミナルを起動しましょう。その上で「screen -dr⁠⁠ と操作してみてください。先ほど起動したscreenの「中身」が移動してくるはずです。

screenはターミナルソフトウェアと「中身」を切り離すことができます。この機能はssh越しにリモートマシンに接続している場合などに役立つでしょう。

hardstatusの設定

screenrcは柔軟なカスタマイズができ、特にhardstatus関連の設定は多くのバリエーションがあります。筆者は次のものを利用していますが、これらも個人の好み次第でいろいろなカスタマイズができるでしょう。ターミナル環境の魅力の一つはこうしたカスタマイズによって、個人の好みに合わせこめることです。

hardstatus alwayslastline "%{= wk} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wb}%m/%d %{=b wb}%c@%H"

最初は上記の設定で使い始め、徐々に自分の手に馴染むものに修正していってみてください。

screenを用いたコピー&ペースト

screenにはさらに、キーボード操作のみでコピー&ペーストが可能です。

[Ctrl]+[a⁠⁠→⁠ESC]と操作することで、⁠コピーモード」に入ることができます(⁠⁠ESC]の代わりに[Ctrl]+[[]を利用することもできます。後述の通りペーストが[Ctrl]+[]]ですので、ESCを使うよりも[]]で指を慣らした方が便利です⁠⁠。

このモードではターミナルに表示されていた文字列をさかのぼることができます、⁠SPACE]キーを押してコピー範囲の始点を指示し、カーソルを移動させてからもういちど[SPACE]を押すことで、選択した範囲を「コピー」することができます。この状態でのカーソル操作は、viで利用するものと同じです。貼り付けは[Ctrl]+[a⁠⁠→⁠Ctrl]+[]]です。

この説明だけでは全く操作が想像できないと思いますので、実際に操作してみましょう。

まず、screenを起動したターミナルで、⁠echo test」と入力し、⁠Enter]を押しましょう。echoコマンドにより、画面に「test」と出力されるはずです。

この、⁠echo test」という部分を、screenを用いてコピー&ペーストしてみましょう。⁠Ctrl]+[a⁠⁠→⁠ESC]を押してコピーモードに入ります。画面下に⁠Copy mode - Column 3 Line 23(+3000) (80,23)⁠などという表示が出るはずです。

この状態で、先ほど入力した「echo test」「e」までカーソルを移動させます(⁠⁠↑]キーを2回押せば良いはずです⁠⁠。

そして[SPACE]キーを押し、コピー範囲の始点を指示します。⁠First mark set - Column 3 Line 20⁠などといった表示が出ます。

この状態で[$]キーを押します。これは『カーソルをその行の最後に移動させる』操作です。

再度[SPACE]を押します。これにより、選択された範囲(つまり「echo test」の部分)がコピーされ、⁠Copied 9 characters into buffer⁠といったメッセージが表示されるでしょう。

[Ctrl]+[a]を押してから[Ctrl]+[]]と押すと、選択した範囲がペーストされ、ターミナルに「echo test」という文字列が表示されているはずです。

エスケープ

先ほどからscreenの操作では、⁠Ctrl]+[a]を押してから操作を開始しています。このような、最初に行うキー操作をscreenでは「エスケープ」と呼びます。エスケープのために使われるキー入力は、screenに「食べられ」てしまいますので、キー操作としては受け付けられなくなります。bashなどの操作では、⁠Ctrl]+[a]「行頭へ移動」に割り当てられていますので、時には[Ctrl]+[a]が必要になることもあります。

このような場合、⁠Ctrl]+[a⁠⁠→⁠a]と操作することで本来の動作をさせることができます。

また、screenrcでescape変数を設定することで、異なるキーシーケンスをエスケープに設定することができます。

おすすめ記事

記事・ニュース一覧