• man++

Linux/Unix系オペレーティングシステムの特徴の1つにオンラインマニュアルがある。manコマンドで、利用できるコマンドに関してのオンラインマニュアルを参照できる。マニュアルページ(manページ)は、作成の手順や基本的なスタイルなどが決まっていて、画面表示だけでなく高品位な印刷を行うことも可能だ。初期のUnixワークステーションでは、製本したmanページがマニュアルとして用意されていた。マニュアルにはコマンドの使い方だけでなく、プログラマ向けの情報も含まれている。ソフトウェア開発環境として、最低限必要な情報もmanコマンドで入手が可能だ。こうした背景もあってか、Unix系のソフトウェアでは、コマンドに必ずといっていいほどmanページと呼ばれるマニュアル情報が付属している。

manコマンドは、「man bash」などのようにコマンド名を引数にして起動する。見つかればマニュアルが表示される。あるいは、「man -k <キーワード>」などのオプションを使ってキーワード検索もできる。Unix由来のmanコマンドの良いところは、終了後、コマンドラインを起動前と同じ状態に戻し、何事もなかったかのようにコマンドラインで作業を続けられる点だ。逆にマニュアルを見ながらコマンドラインを入力したければ、別ウィンドウなどでmanコマンドを実行すればよい。

現在のLinuxでもmanコマンドは同じように利用できるが、ディストリビューションやそのときのユーザー選択などにより、最初からmanがインストールされるとは限らない。GoogleでもBingでも“man bash”を検索すれば、bashのマニュアルページがいくつも見つかる。厳密にはmanページは、コマンドのバージョンに連動している必要があるが、標準的なLinux/Unixのコマンドでは、大きな変化はなく、バージョンの違いはほとんど問題にならない。

Windowsでは、PowerShellがオンラインマニュアルを備えており、自作のコマンドであってもマニュアルを組み込み、helpコマンド(エイリアスとしてmanが使える)でこれを表示できる。PowerShellのユーザー作成スクリプト(関数)では、関数内にコメントとしてヘルプページを埋め込む、あるいはXMLで記述したファイルへのリンクやインターネットリンク(URL)を埋め込むことができ、これがhelpコマンドで自動的に参照される。ただし、ヘルプの範囲はPowerShellという言語に限られ、manコマンドのようにシステム全体に亘る情報を得られるわけではない。

cmd.exeの場合、自作スクリプト(バッチファイル)のオンラインヘルプのサポートは何もないが、標準の組み込みコマンドは、「/?」オプションによるオンラインヘルプ表示が可能になっている。しかし、このオンラインヘルプでは、ページ単位で一時停止し、ヘルプメッセージがそのままコマンドラインに残る。気にならなければそれでもいいが、Unixのmanページのようにコマンドラインをそのままにしたいなら、別ウィンドウに表示させる方法がある。その場合には、startコマンド(リスト01)や、Windows Terminalの実行エイリアスwtコマンド(リスト02)を使ったバッチファイルを作る(短いので必ずしもバッチファイルにする必要はないが……)。cmd.exeのオプションを“/k”にしてあるのはヘルプを表示し終わったときにウィンドウを買ってに閉じないようにするためだ。ヘルプの表示終了でウィンドウを閉じたいのなら“/c”に書き換える。どちらも最初の引数にコマンド名(拡張子は省略可能)を置いて“cmdhelp.bat for”のように呼び出せばよい。

リスト01


@start cmd.exe /k %1 /?

リスト02


@wt -w help --title %1 cmd.exe /k %1 /?

なお、こうした1行のバッチファイルは、


copy con cmdhelp.bat

として実行し、バッチファイル(cmd.help.bat)の中身を入れたらCtrl+Zで抜ける、という方法でGUIエディタを使わずに作成できる(写真01)。

  • 写真01: 数行程度のバッチファイルを作成するならコマンドラインでcopyコマンドを使い、コンソール(con)からファイルに直接書き込むとよい。コマンド実行後、キーボードからコマンドを入れて、最後にCtrl+Zで終了する。なお、すでに同名のファイルがある場合には、上書きを確認してくる

オンラインヘルプとは少し内容が異なるが、コマンドラインリファレンスのWebページがMicrosoftのサイトにある。URLはほぼ固定していて、


https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/<コマンド名>

でアクセスができる。ただし、「route」コマンドだけは、「route_ws2008」として検索する必要がある。コマンドラインからブラウザでこのURLを開くなら、リスト03のようなバッチファイルを作るといいだろう。

リスト03


@set cmd=%1
@start https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/%cmd:route=route_ws2008%

WSL側にw3mがインストールされているなら、


wsl.exe -- w3m <URL>

とすれば、コンソール内でリファレンスページを見ることも可能だ。

今回のタイトルの元ネタは、Frederik Pohlの“Man Plus”(邦訳 マン・プラス。ハヤカワ文庫SF)である。人類存続のため火星移住が必須となり、そのために人体改造プロジェクトMan Plusが開始される……。機械と人間の関係を描くSFは少なくないが、機械化され人間でなくなっていく過程というテーマに踏み込んだ作品は少ない。機械化というと、後悔や悲哀を描くものが多いなか、読み応えのある作品で「余韻」もある。

なお、同じ作者の“Mars Plus”(Thomas T. Thomasとの共著)は続編と言われるが、“Man Plus”の読後感を損ないたくないなら、読まないほうがいいと先輩から言われた。筆者は言うことを聞かずに読んで後悔した(しかも早々に挫折)。いや、年寄りの言う事は聞くものである。