今回から数回にわたり「新世代のOS Xユーザに向けて」と銘打ち、Mountain Lionリリース直前企画をお届けしたい。そのシリーズ第1弾は「コマンド」について。見映えするOS XのGUIを愛でるのもいいが、数十年の歴史を持つCUIの世界を知っておいて損はない。もう知っているよという向きにも、読者層拡大キャンペーン(?)ということでご理解願いたい。
「CUI経験値」はこんなとき役に立つ!
ふと気付けば不惑超えの筆者、日ごろ接する編集者は年下ばかりという状況だが、精神年齢が低いためか話をしてもジェネレーションギャップは気にならない(相手が気遣っているだけ?)。ただひとつの例外を除いては……それが「CUI経験値」だ。
GUIは、アイコンなど図形化された部品やマウスのようなポインティングデバイスを使い、視覚や触覚といった「感覚」に訴える。しかし文字列で構成されるコマンドの世界は理論的、かつ曖昧さが存在しにくいため、CUI経験値の低いユーザを寄せ付けない。特にここ15年以内にコンピュータを使い始めたユーザは、GUIですべてを済ませてしまう傾向が強く、CUI経験値豊富なユーザの比率は年々低下しているように思う。
しかし、CUI経験値を持っていて損はない。たとえば、大学生。レポートの形式にLaTeXで整形した文書を指定されたらどうする? Terminalを使わなくてもLaTeX文書は作成可能だが、スタイルファイルの追加など少し高度な処理を目指すと、結局はTerminal上での作業が必要になる。UNIXコマンドではなくても、Mathematicaや「R」などの数式/統計処理ソフト、RubyやPerlといったスクリプト言語を使う演習は、基本的にCUIベースの作業になるはずだ。
一般ユーザもまた然り。コマンドの扱い方を多少なりとも知っていれば、システムトラブルの解決に役立つ。他のOS Xマシンを遠隔操作する「リモートログイン」(SSH)には、コマンドの知識が必須だ。OS Xの裏ワザ作業も、「defaults」などコマンドを多用する。OS XがUNIXベースであるかぎり、役立つ場面は必ずあるのだ。
これだけは覚えておきたい、Terminalの「イロハ」
ユーティリティフォルダにある「Terminal」は、ひらたくいえば「コマンド実行ツール」。コマンドの力を借りたいときに起動し、用が済めば終了して構わない。その背後では、シェルというプログラムが入力された文字列(コマンドライン)を解析し、最終的にはOS Xの心臓部(カーネル)に命令を伝えているのだが、難しいことはとりあえず置いておこう。
さて、そのTerminalを起動すると、なにやら文字列のあとに「$」が表示され、その右横で四角いカーソルが点滅しているはずだ。これがコマンド入力待ちの状態で、ここからコマンドを入力し、行末で「enter」を押すとコマンドが実行される。そして滞りなく処理が完了すれば(多くのコマンドは一瞬で完了する)、再び「$」が現れる。Terminalでの作業は、基本的にその繰り返しだ。
ここで、3つのポイントを指摘しておく。これさえ理解しておけば、Terminalは起動したもののなにがなんだか、という状況からは逃れられるはずだ。
1. 「$」の意味を知る
Terminalを起動すると、最初に「シェル」というプログラムが実行される。「$」という記号(プロンプト)を表示して入力を待つのも、入力されたコマンドやファイル名などの文字列一式(コマンドライン)を解釈するのも、すべてこのシェルの役割だ。一般的に、Terminalのような「ターミナルエミュレータ」と呼ばれるアプリケーションはシェルとセットで利用され、OS Xではデフォルトのシェルに「bash」が採用されている。
2. いまどこにいるかが重要
Terminal(実際にはシェル)での作業は、常に「自分がどこにいるか」を意識しながら行う。コマンドを使いファイルになんらかの処理を施したい場合、そのファイルがあるフォルダ――UNIXでは伝統的に「ディレクトリ」と呼ばれるが機能的には同じ――に作業場所を移すか、そのファイルのありかを示す順路(パス)を指定するか、どちらかの方法を選ぶことになる。
ただ、コマンドを実行するつど長々とファイルのパスを指定するのは面倒なため、対象のファイルがあるディレクトリに作業場所を移す前者のほうが効率的なことが多い。だからシェルでは、自分が現在どのディレクトリにいるかを意識しつつ作業することが求められる。なお、シェル起動直後のディレクトリはホームディレクトリであり、OS Xの場合はホームフォルダ(/Users/ユーザ名)が設定される。
3. コマンドと引数の関係
現在作業中のディレクトリ(カレントディレクトリ)を表示する「pwd」や、万年カレンダーを表示する「cal」のように、コマンド名を入力するだけで動作するコマンドもあるが、多くのコマンドはファイル名や文字列などの作業対象を指定する必要がある。その作業対象が「引数(ひきすう)」だ。
引数はコマンド名の後に入力するが、その際区切りとして「(半角)スペース」を1つ空けることが鉄則だ。たとえば、コマンド名が「cd」、引数が「Pictures」のときには、プロンプト右横のカーソル位置から「cd Pictures」と入力する。そして最後に「enter」キーを押せば、その行の内容(コマンドライン、ここでは「cd Pictures」)がシェルに伝えられ、めでたくコマンドとして処理されることになる。
なお、多くのコマンドには「オプション」と呼ばれる機能のスイッチが存在する。こちらはコマンドごとに多少のクセがあり、引数ともどもどのような順序で入力していくか、初心者にはわかりにくい部分がある。オプションの扱い方については、次回説明する予定だ。