日別アーカイブ: 2019年8月6日

MS-DOSのファンクションキーについて

一時的な場所に設置したPC-98でMS-DOSのCLI操作を行っていると、作業的にキー入力がキツく、COPYコマンドで長いパスを入力しようとすると誤入力してしまって再度打ち直したり、同じコマンドを入力するにもまた一字ずつを入力してと、かなり面倒で作業が一向に進まない状況に陥っておりました。

LinuxみたいなCLIならではの入力支援機能が、MSDOSにもなかったっけ????と調べたところ、画面下端に表示されているファンクションキーのコマンドがなんとか使えそうとのこと。

そういや、学生時分、はじめてMS-DOSの画面を見たとき、これって何を表してるんだろう?って思ってたけど、実習ではMifesといったテキストエディタを使って長いソースコードを入力していたのと、MS-DOSで入力することはほとんど決まっていたし、バッチファイルで済ませていたのでファンクションキーってほとんど使ってなかった。

なので、あらためてこれについて調べたところ、MS-DOSでは「テンプレート機能」と呼ぶとのこと。
“テンプレート”とは、WindowsOSで言うところのコピペ操作で使用される”クリップボード”といったキー入力のキャッシュみたいなもので、直前に入力実行した入力文字列が自動的にテンプレートに登録されるようです。(実行結果の成否に関係なくすべて登録される)

そこで、いまさらながら、このテンプレート機能と使い方について、調べてまとめてみた。

”C1”(F1キー)・・・テンプレートに登録された入力文字列を頭から1文字ずつ新行にペーストする。 (おそらく、Copy 1charactorの略では?)

”CU”(F2キー)・・・ [F2]キーを押した後に、任意の英数記号1文字を入力することで、テンプレートに登録された文字列のうち、入力した1文字の前までの文字列を新行にペーストする。入力した1文字が文字列に複数個所存在する場合は、繰り返しこの操作を実施することで、次の1文字前までの文字(列)がペーストされていく。
(おそらく、Copy untill ・・・の略では?)


”CA”(F3キー)・・・テンプレートに登録された入力文字列すべてを新行にペーストする。 つまり、直前に実行したコマンドを繰り返して実行するリピート機能にあたる。 (おそらく、Copy all charactorsの略では?)


”S1”(F4キー)・・・ テンプレートに登録された入力文字列を頭から1文字ずつスキップ(=削除)していく。 たとえば、引数は同じだけど、コマンドだけを書き換えて実行したい場合に有効ではないかと思われる。(おそらく、Skip 1charactorの略では?)


”SU”(F5キー)・・・ [F5]キーを押した後に、任意の英数記号1文字を入力することで、テンプレートに登録された文字列のうち、入力した1文字の前までの文字列をスキップ(=削除)する。入力した1文字が文字列に複数個所存在する場合は、繰り返しこの操作を実施することで、次の1文字前までの文字(列)がスキップされていく。
(おそらく、Skip untill ・・・の略では?)


”VOID”(F6キー)・・・ 上述のテンプレートからの文字列の呼び出し操作(=ペースト)を実施すると、ペーストした文字列は、テンプレート上から消えてしまう。そこで、呼び出し操作をキャンセルし、テンプレートに登録された文字列が保存された状態に戻す。この操作を行うと、”¥”が表示され、新行が再表示される。(「void」という英単語の意味が”無効の”ということだから?)


”NWL”(F7キー)・・・ 現在の行にて入力中に[F7]キーを入力すると、実行させずにテンプレートに入力中の文字列をコピーすることができる。また、このとき入力行の末尾(入力中に [F7]キーを押した位置に、”@”記号が表示され、改行された後、プロンプト表示がない編集モード?状態にはいり、上述の各種テンプレート編集機能を駆使して、実行させたいコマンド文を編集することができる。


”INS”(F8キー)・・・ [F7]キーを押してテンプレートの編集モードになったときに、記憶した文字列の前に、コマンドなどの文字列を追加(ないし結合)させたい場合に、この[F8]キーを入力すれば、その後新たに入力した文字(または文字列)とテンプレートに記憶させた文字列を結合(=挿入)させることが可能となる。編集モード中に[F8]キーを押さずに文字列を入力すると、その入力した文字の文、記憶された文字列の頭から文字が差し替えられてしまう。

例)=====================================================

>test.c@ 
“type “と入力した後、[F3](CA)キーを押すと、
        ”type c”となってしまう。
    そこで、[F8]キーを押して、
“type”と入力した後、[F3](CA)キーを押すと、
        ”type test.c”となる。

   =====================================================

”REP”(F9キー)・・・ 前述の”INS”機能の無効化?意味不明。

”^Z”(F10キー)・・・ [CTRL]+[Z]のこと?意味不明。

最後の2つは意味不明状態ですが、、、それ以外はMS-DOSのCLI操作が幾分向上するかと思われるので、忘れないよう積極的に使っていこう!と思う。

MS-DOSのプロンプトを変えてみた。

学生時分、MS-DOSにちょっと詳しい(先輩から教えてもらったとか)人が、実習室のパソコン(もちろんPC98)を使用する際、まずやらかすのが自分専用カスタマイズとして、このDOSプロンプトの変更である。

デフォルトだと、白地でカレントドライブと”>”記号という味気ない表記で、パソコンを操作した経験がない(プロンプトを知らない)人なんかは、隣の学生の入力操作を盗み見る際に、よくプロンプト記号から入力してしまい実行に失敗するというミスが多かった。

そこで、(そういった人たちへの親切心からか?)プロンプトの表示色を白以外の色に変えたり、プロンプトの”>”記号を点滅させたりして、自慢する輩もいた。(私は、そんな面倒なことには興味なかったが、自分で購入した98ノートは白黒液晶で見にくいこともあったので、あとで教えを請い、自分のPCにはちゃっかり実装したという記憶がある)

そこで、(いまさらだが、、、)MS-DOSを再び操作することになり、この変更を再現したくなったので、以下に実装方法を記す。

プロンプトの変更コマンド”prompt”を使用する。

この引数に、下記のパラメータ文字を指定する。(プロンプト表示に使えそうなもの限定)

$t ・・・時刻を表示。書式は、”hh:mm:ss.ss”

$d  ・・・日付を表示書式は、”YYYY-MM-DD(曜日)”

$p ・・・カレントドライブとディレクトリパスの表示

$g ・・・”>”記号を表示

$l(エル) ・・・”<”記号を表示

$b ・・・”|(パイプライン)”記号を表示

$s ・・・空白文字を表示

$v ・・・”MS-DOS バージョン <Ver.番号>”の書式で表示

$n ・・・カレントのドライブ文字のみを表示

$e[<ESCシーケンスコード>m ・・・文字色や点滅、反転など、プロンプト文字の文字属性を設定。

ここで、
<ESCシーケンスコード> は、以下の数値が入る。

0=設定したすべての文字属性をリセットする。(設定し終わったら、最後に必ず入れること。さもないと、ユーザの文字入力の表示にも影響し、分かりづらい)

1=強調文字で表示

4=下線をつける

5=点滅

7=反転

8=シークレット(無表示)

30~37=文字色{黒・赤・緑・黄・青・マゼンタ・シアン・白}

40~47=反転文字の背景色{黒・赤・緑・黄・青・マゼンタ・シアン・白}

なお、うちの環境は、下記のように、プロンプト文字は、カレントディレクトリを表示させて、水色にして”>”記号は点滅させるようにしてます。

promptコマンドを実行しての設定変更は、パソコンを再起動させてしまうと消えてしまい、起動のたびに打ち込むのは面倒なので、a:\autoexec.batに、あらかじめ記載しておくとよい。

今思うと、ディレクトリが多階層になっているところの下層ディレクトリにカレントパスを移動させると、プロンプトだけで入力行の半分近くを占有してしまい、そういったときに見にくいという難点がある。(しかも、カレントディレクトリの確認は、”cd”コマンドで済んでしまうし)

Linuxと同じように”ユーザ名@ホスト名”にしたいところですが、そのようなパラメータ文字は用意されていないので、日時をプロンプトに表示させるのが実用的かもしれません。(ただし、日時両方だとプロンプトが長くなってしまいますが)