Poderosa でコマンドの実行結果を簡単にコピーする
ターミナルエミュレータである Poderosa は TeraTerm など、他のターミナルエミュレータに劣らず、とても良く出来ており便利です。Poderosa には以下のような特徴があります。
- タブ方式に対応している。しかも、タブを左右に分割したり、上下に分割したり、レイアウトを自由に出来る
- Telnet、SSH1、SSH2 だけでなく、Cygwin 接続もサポートしている(TeraTerm の CygTerm は余計なウインドウが開いて、やや使い辛い)
- 標準で SSH 鍵作成や IPv6 に対応
- プラグインで SSH ポートフォワーディングやシリアル接続、マクロにも対応
- Apache2 ライセンスで公開されている、オープンソースプロダクト。ソースコード自体は C# で記述されている
設定変更の際、証跡として変更後の設定ファイルを取得する場合がありますが、Poderosa を使うとこの作業を省力化することが出来ます。以下は Poderosa 4.10 を使った環境を想定しています。
コマンドの実行結果をコピーする¶
Poderosa ではコマンドを実行する際、Enter キーでは無く、「Ctrl + ,(カンマ)」を実行すると以下のようなメニューが表示されます。ここから「コマンド結果をコピー」を選択すると、コマンドの実行結果をクリップボードへコピーすることが出来ます。Cisco ルータ等でコマンド結果の表示量が多く、more が表示されるようなケースでも問題なく、コピー出来ます。
「コマンド結果をポップアップ」を選択すれば、コマンドの実行結果をクリップボードへコピーするのではなく、別ウインドウとして表示することも出来ます。
「コマンド結果をコピー」を上に表示する¶
「Ctrl + ,」を押下した際に表示されるメニューは、上に「コマンド結果をポップ」、下に「コマンド結果をコピー」が表示されます。「コマンド結果をポップアップ」も便利な機能なのですが、(少なくても私の場合は)「コマンド結果をコピー」の方が圧倒的に多く使う為、こちらが上に来ている方が便利です。上述の通り、Poderosa は Apache2 ライセンスのオープンソースコードプロダクトですから、ソースコードを修正することで見た目や振る舞いを変更することが可能です。
「コマンド結果をコピー」を上に表示させる為には ダウンロードしたソースコード のうち、 TerminalEmulator プロジェクトの CommandResultPopup.cs の 246 行目あたりを以下のように書き換えます。変更前は以下のようになっています。
1 2 3 4 5 6 7 |
|
251 行目と 252 行目を入れ替え、RegisterExtension メソッドの呼び出し順序を変更します。
1 2 3 4 5 6 7 |
|
ソースコードの変更後、プロジェクトをビルドし、生成された Poderosa.TerminalEmulator.dll を C:\Program Files\Poderosa\TerminalEmulator にコピーします。これで「Ctrl + ,」を押した際に表示されるメニューで、「コマンド結果をコピー」が上に表示されるようになります。
サーバでも「コマンド結果のコピー」を使えるようにする¶
「コマンド結果のコピー」は、正規表現によってプロンプトを見分けることで実現されています。この設定はメニューの「ツール」→「シェルスキーム エディタ」の「プロンプト正規表現」設定で確認することが出来ます。デフォルトでは「[>#%]*[>#%]」となっています。
bash の場合、プロンプトは PS1 という環境変数で定義されています。私の Mac OS X では以下のように定義されていました。
1 2 |
|
Linux や Mac OS X ではデフォルトのログインシェルとして bash がよく利用されていると思いますが、殆どのケースで「$」という記号が利用されていると思われます。しかし、Poderosa の「プロンプト正規表現」には「$」が含まれていない為、「コマンド結果のコピー」機能が上手く働きません。そこで、「プロンプト正規表現」に「$」を加え、「[>#%$]*[>#%$]」と設定します。
これで bash 環境下でも「Ctrl + ,」で「コマンド結果をコピー」機能が利用出来るようになりました。
変更後の Poderosa.TerminalEmulator.dll¶
変更後の Poderosa.TerminalEmulator.dll をアップロードしておきます。
- Poderosa.TerminalEmulator.dll
ダウンロードしたファイルを展開し、中に含まれている Poderosa.TerminalEmulator.dll を C:\Program Files\Poderosa\TerminalEmulator に上書きすれば、インストールは完了です。