bg
フロントエンド


このフロントエンドはGUIを持たず、起動すると、指定されたコマンド行を実行してすぐに終了してしまうという点で、他のフロントエンドとは大きく異なります。デスクトップアイコンとして、ダブルクリックすると、コマンド行ツールを実行してその出力をテキストエディタに送るアイテムや、クリップボードの内容を書き換えるようなアイテムを作りたいときに使います。

デスクトップアイコンやスタートメニューアイテム

Windowsマシンのデスクトップにはダブルクリックするとプログラムが起動されるようなアイコンがいくつも表示されています。また、画面最下部のツールバーの左端にある「スタート」メニューをクリックしてメニューをたどっていくと、プログラムが起動されるようなアイテムにたどり着くことができます。これら、プログラムの起動に使えるデスクトップアイコンやスタートメニューアイテムは、実際には「ショートカットファイル」という形式のファイルになっています。たとえば、デスクトップでマウスを右クリックし、表示されたメニューで「新規作成」を選択して、さらに「ショートカット」を選択すると、2ページで構成される「ショートカットの作成」ウィザードが表示されます。「スタート」ボタンの位置でマウスを右クリックし、「エクスプローラ」か「開く」を選択し、オープンされたウィンドウでマウスを右クリックして、「新規作成」、続いて「ショートカット」を選択したときにも、同じウィザードが表示されます。最初の方法を使えばデスクトップアイコン、2つ目の方法を使えばスタートメニューアイテムを作ることができます。

ショートカットの作成」ウィザードの1ページ目は、「項目の場所を入力してください」と指示しており、その右には、ファイルを選択するためのボタンが置いてありますので、何らかのファイル名の入力を求められているような感じがしますが、実際には、「スタート」メニューの「ファイル名を指定して実行」を選択したときに表示されるダイアログボックスと同じで、ファイル名だけではなく、オプションも指定できます。つまり、コマンド行を指定できるのです。ただし、このコマンド行はエクスプローラによって解釈されます。MS-DOS/コマンドプロンプトのコマンド行のようにcommand.com/cmd.exeが解釈するわけではないので、たとえばパイプ記号(|)やリダイレクト記号(<>)を使うことはできません。その代わり、たとえば、c:\test.txtのようにデータファイル名だけを入力しても、エクスプローラが.txtという拡張子に対応するプログラムを探してきて、データファイル名をコマンド行オプションとして指定して起動してくれます。

ウィザードの2ページ目は、ファイル名を指定します。このファイル名には.lnkという拡張子が追加されてハードディスクに格納されますが、デスクトップアイコンやスタートメニューアイテムのラベルとしても使われます。ラベルとして表示されるときには、.lnkという拡張子の部分は取り除かれます。ウィザードの2枚のページに適切な内容を入力して「完了」ボタンを押すと、ショートカットファイルが作成されます。作られたばかりのデスクトップアイコンやエクスプローラ内のアイコンを右クリックして、メニューから「プロパティ」を選択すると、タブが3つあるプロパティシートが表示されます。「全般」タブの最上部には先ほど指定したファイル名、「ショートカット」タブの「リンク先」にはコマンド行が表示されていますが、書き換えれば変更することができます。さらに、「ショートカット」タブの「アイコンの変更」ボタンを使えば、最初のウィザードでは指定できなかったアイコンも変更できます。

ダブルクリックするとコマンド行ツールを実行して出力をテキストエディタに送るデスクトップアイコン

話を戻しますが、ショートカットファイルで「項目の場所」とか「リンク先」とか言われているものが、実際にはコマンド行なのだとすれば、次のような内容を指定したらどうなるでしょうか(なお、予めデスクトップアイコンのプロパティシートの「ショートカット」タブで「作業フォルダ」としてPCKをインストールしたフォルダを入力しておいてください。通常なら、"c:\Program Files\longtail\cmdline"になるはずです)。

 

spawn fortune

 

fortune.exeが実行され、おみくじの内容が表示されたテキストエディタウィンドウがオープンされるように思えます。実際、その通りのことが起きますが、おそらく誰にとっても不満なことも起きるでしょう。テキストエディタウィンドウがオープンされる前に、黒いMS-DOS/コマンドプロンプトウィンドウが一瞬ぱっと表示されて消えるのです。これは、spawn.exeがコマンド行プログラムだから起きることです。「スタート」メニューから「ファイル名を指定して実行」を選択していろいろ試してみていただきたいのですが、エクスプローラのプログラム起動機能は、起動しようとしているプログラムがコマンド行プログラムだと、標準入出力を提供するために、かならずMS-DOS/コマンドプロンプトウィンドウを表示するようです。PCKGUIフロントエンドは、spawn.exeを起動するときに、ウィンドウを表示せず、画面の奥に隠すように指示していますので、MS-DOS/コマンドプロンプトウィンドウは表示されませんが、スタートメニューアイテム、デスクトップアイコン、「ファイル名を指定して実行」は、すべてエクスプローラから起動されますので、ウィンドウを隠してspawn.exeを起動するということができません。

(bg.exe)は、この隙間を埋めるためのツールです。はコマンド行プログラムではなく、GUIプログラムの形式になっています。普通のGUIプログラムがウィンドウを表示するところで表示せずに、コマンド行で指定されたプログラムを起動するとただちに終了するので、GUIプログラムのように見えないだけです。ウィンドウを隠すというプログラムの起動方法は他のGUIフロントエンドとまったく同じです。しかし、コマンド行を指定せずにを実行しても、そのときに選択されているテキストエディタに空の一時ファイルを渡して起動するだけです。コマンド行を必要とするという点では、spawn.exeに似ています。実際、コマンドプロンプト(MS-DOSプロンプト)で起動するときには、spawn.exebg.exeはほぼ同じものとして扱うことができます。

の使い方

では、MS-DOS/コマンドプロンプトウィンドウを表示せずにfortune.exeを実行し、おみくじの内容が表示されたテキストウィンドウをオープンするにはどうしたらよいのでしょうか(ただし、fortune自体の設定は済んでいるものとして話を進めます。fortuneの設定の詳細は、: fortune.exeを参照してください)。「項目の場所」、「リンク先」として、次のコマンド行を入力します

 

bg fortune

 

一言で言えば、spawn.exeの代わりにbg.exeを使えばよいということです。bg.exeは、spawn.exeと同じように/c/d/n/s/<NUM>オプションを受け付けます。たとえば、次のようにすると、

 

bg /d fortune -az

 

-azオプション付きのfortuneの出力の後ろに、コマンド実行時間、カレントディレクトリ、コマンド行などの4行情報を付加しますし、次のようにすると、

 

bg /c cat -n

 

クリップボードにセットされているテキストデータが行番号付きで表示されます。さらに、次のようにすると、

 

bg /n copy c:\a.txt c:\b.txt

 

MS-DOS/コマンドプロンプトウィンドウもテキストエディタウィンドウも表示せずに、ファイルをコピーできます。

最後に、次のようにすると,

 

bg /n /c /s  sed -e "s/^/> /"

 

クリップボードのテキストデータの各行の先頭に"> "を追加します(つまり、クリップボードの内容を書き換えます)。

は、コマンド行をspawn.exeに渡して実行し、spawn.exeはさらにcommand.com/cmd.exeを使ってコマンド行を実行しますので、パイプ記号(|)やリダイレクト記号(<>)も解釈されます。たとえば、次のようにすれば、

 

bg /1 fortune -az | fold -w 20

 

fortune –aの出力をfold –w 20に渡した結果を1番のテキストエディタに表示することができます。

 要するに、bgを使うには、pipe line)などでコマンド行を組み立て、最下部のコマンド行の部分をクリップボードにコピーしてから、「リンク先」エディットボックスにそれを貼り付け、全体を” ”で囲み、その手前にbgと書き、さらに/cだの/sだのといったオプションを適宜付ければよいのです。bgなアイコンをいくつも作れば、あなたのPCライフが大きく変わることは間違いありません。