コマンドをテキストでたたいて入力し、その結果をずらずらとでてくる文字列で得る…コンソールとか、ターミナルとか言われている世界である(Mac OS Xではコンソールはシステム的にはGUIで使っているモードを言うので、ここではターミナルで通すことにする)。古くからのMacユーザの方々は(実は筆者もそうなのだが)、MS-DOSのターミナルな世界を非常に嫌い、MacのGUIに注目した方も多かっただろう。もちろん、Windowsによって、MS-DOSははるか彼方に追いやられ、エンドユーザレベルではプロンプト(ターミナル画面で、コマンド入力を受け付ける状態を示す表示)を見ることもほとんどなくなった。 しかしながら、UNIXの世界では、ずっとターミナルが当たり前だったのである。この理由は、MS-DOSのターミナルと、UNIXのターミナルはまったく意味が違うという点を理解しなければならない。MS-DOSのものは非常に機能が少ない。熟知したところで使っているうちのストレスは変わらない。一方、UNIXのターミナルはいろいろなことができ、とても便利なのである。普通は「シェル」と呼ばれているが、単にコマンドを受け付けてどうこうするといった以上に、マクロプログラミング的な側面も多く、現在に至ってはコマンドも豊富にあるなど、システム管理を快適に行えるのがシェルだと言えるわけだ。コマンドを受け付けるというよりも、コマンドの形式に含めたさまざまな記述から、たとえば特定の条件をみたすファイルだけをまとめて処理するといったことが指定できる。熟知すればする程快適になる。だから、MS-DOSとは大きく違うことは知っておいてもらいたい。 さて、Mac OS XのコアはUNIXであることはよく知られているが、そこにコマンドを直接送り込んで実行できるのがTerminalというアプリケーションである。/Applications/Utilitiesフォルダにある。こうしたコマンドラインはエンドユーザ向けのユーザインタフェースではないとして、当初Appleはターミナルアプリケーションは含めないとしていた。しかしながら、Mac OS Public Betaにはしっかり入っている。ただ、製品版ではなくなってしまうという可能性も残されているものの、とりあえずはターミナル利用ができるのである。
◇Terminalを起動してコマンドを入力してみた
プロンプトには接続サーバ名(localhost)と、カレントディレクトリ名(~つまりホームディレクトリ)、アカウント名(ここではmsyk)が表示される。これに続いてコマンドを打ち込めばよい。ウインドウの大きさは、右下のサイズボックスをドラッグすることで変更することができる。その場合、行数や桁数が増えるようになっている。このとき、Mac OS Xにログインしているアカウントで、シェルを利用できる。異なるアカウントでコマンドを発行したい場合には「su」コマンドを使う。とにかく、ここからのコマンドはUNIXの通りである。ただ、一般的なところと違うのは、HFS+フォーマットのボリュームでは大文字と小文字の区別がされないことだ。Documentsフォルダをカレントにするのに、「cd documents」でも、「cd Documents」でもかまなわない。ちなみに、標準で起動するのは、tcshと言われるシェルである。C shellの改良版だが、ものの本によればtcshはあまり使われていないそうだ。ちなみに、C shellのもとになったのがBourne Shell、通称B shellで、シェルスクリプト(コマンド群を記載したプログラム)でよく利用されている。Mac OS XにはC shellもB shellも、さらにはZ shell含まれている。なお、Linuxなどで標準的に使われているbashのファイルはMac OS Xでは見当たらなかった。
ちなみにTerminalまでを使う人には蛇足とは思うが、補足させていただく。Mac OSではUNIXにtelnetでリモート接続するのに、BetterTelnetなどのアプリケーションが使われているが、Terminalはそれの代わりになるもの考えてよいだろう。Terminalを起動し、「telnet サーバ名」というコマンドで別のサーバに接続できる。ここで、Linuxサーバに接続してlsコマンドなどでファイル名一覧を表示させると、独特のカラフルなファイル一覧表示(ちょっとケバいんだが…)もきちんとTerminalの画面に出てくる。
Terminalはかなり細かく設定ができる。アプリケーションメニューのPreferencesを選択すると、次のようなダイアログボックスが表示される。
◇Terminalを起動してコマンドを入力してみた
使用するフォントや、起動するシェル、何行分過去の表示行をためておくかなど、かなりいろいろある。しかしながら、やはりここで1つの大きな注目は、日本語が表示できるかどうかだろう。標準状態ではMonacoフォントだから日本語は化けるにしても、文字数を数える限りは、1文字3バイトになっているので、UTF-8形式でファイル名が得られる模様だ。だとすると、コード体系の指定があるのかなどが興味あるところだ。 そこで、Osakaフォントに指定をしてみた。すると、なんと日本語が出ないどころか、英語の1バイト文字ですら正しく表示されない。ヒラギノなど他の日本語フォントにしても同様だ。いずれにしても日本語の表示はあきらめないといけないのだが、文字コードの選択のような機能もだめであった。なお、フォントは、FontメニューのShow Fonts(Command+T)でも変更することができる。
ところで、TerminalのアプリケーションメニューにはTerminal Servicesという項目があり、選択すると以下のようなダイアログボックスがでてくる。ここでは、Terminalというか、シェルに与えるコマンドを定義できると言えばよいだろうか。
◇Terminal Servicesの設定ウインドウ
このTerminal Servicesだが、他のアプリケーションでは、アプリケーションメニューのServicesのTerminalメニューに、項目がでてくる。以下の図は、テキストエディタのTextEditがアクティブな時のアプリケーションメニューだが、Terminal Servicesのウインドウのいちばん上にあるリストにある名前が全てではないが見えている。
◇Terminal Servicesの項目がTextEditで見えている
実は、このTerminal Servicesの機能は、どうもうまく使えない。いろいろ試したところでは、たとえばTextEditなどからシェルに対してコマンドを発行できるというところは確認できた。ただし、標準入力や標準出力でのデータの出し入れに対応しているアプリケーションでないと、あまり多くは期待できないのではないかと思う。 とりあえず、次のようにすれば、何か動くところが見られる。Terminal Servicesのウインドウで、Evaluate Arithmeticという項目を選択してみる。すると、Command and Key Equivalentに「echo "%s" | bc」と出てくる。どうやら、%sは選択範囲を意味する文字列であり、それをechoで標準出力に出して、その結果をbcコマンド(計算を行い結果を表示する)に渡すというものだ。ここで、Executionのポップアップメニューで、Run Service in a Windowを選択しておく。こうしてOKボタンをクリックすると変好結果が保存される。そして、TextEditで、文面にたとえば「1+2」などと入力して選択しておく。そして、アプリケーションメニューのServicesにあるTerminalから、Evaluate Arithmeticを選択する。すると、Terminalが起動して、1+2の計算結果の「3」を表示するという具合だ。選択範囲を取り込むとか、それが単純なテキスト、リッチテキストなどを受け入れるかといった選択肢が、Terminal Servicesのウインドウに見られる。 ここで、ExecutionがRun Service in the Backgroundの場合、バックグランドにシェルを起動してコマンド処理を行うのだと思うが、そうした場合結果は必然的に標準出力になると考えられる。TextEditは選択範囲を取り出すことは可能なようだが、標準出力の結果を取り込むという機能もないし、Count Wordsの実行結果を見る限りでは標準入力に書き出すという機能はあるようだが、データの最後であるという指定がうまくなされていないと思われる。いずれにしても、Terminal Servicesと連係できる機能を持つアプリケーションがとりあえずは見当たらないのである。だから、Terminal Servicesはとりあえずは使えないに等しいと言えるのではないだろうか。であるが、コマンドを利用する方法としてはおもしろいものもあり、アプリケーションによってはこうした機能を活用する場面もこれからは出てくるのかも知れない。 |