コマンドの履歴とエイリアス
ObjectScript シェルでは、広範な行呼び出し機能が、前のコマンドを検索するオプションと共にサポートされているだけでなく、コマンドのエイリアスを定義する機能もサポートされています。これらのオプションは ObjectScript の拡張機能ではないため、ルーチンやメソッドで使用することはできません。
行呼び出し機能
ObjectScript シェルでは、上矢印以外にも、履歴バッファに保存されたコマンドのリストを使用する、より広範な行呼び出し機能もサポートされています。この機能により、以前に入力した特定のコマンドを呼び出すことができます。
行呼び出しを有効化するには、コロン (:) に続けて、コマンドを明確に特定する文字を 1 つ以上入力します。
さまざまな特殊なコマンドを発行して、コマンド・プロンプトで行呼び出しを操作できます。まず、:? は、クイック・ヘルプを表示します。
USER>:?
:<number> Recall command # <number>
:alias Create/display aliases
:clear Clear history buffer
:history Display command history
:unalias Remove aliases
:history コマンドは、履歴バッファに保存されているコマンドの番号付きリストを生成します。以下の例のように、その番号を使用して特定のコマンドを呼び出すことができます。
USER>:h[istory]
1: zn "%SYS"
2: Do ^SYSLOG
3: write "Hello"," World!"
4: write $J
5: :h
$SYS>:3
write "Hello"," World!"
Hello World!
:alias コマンドによって、プロンプトでよく入力する ObjectScript コマンドのショートカットが作成され、:unalias <name> によって、その名前に関連付けられた定義が削除されます。"エイリアス" を参照してください。
:clear コマンドは、呼び出しバッファの内容をすべて削除しますが、~\.iris_history は削除しません。
逆インクリメンタル検索
逆インクリメンタル検索 (RIS) は、ObjectScript シェル呼び出し機能の追加の動作モードです。このモードにするには、Ctrl-R を入力します。RIS モードを使用するには、呼び出しバッファにコマンドが保存されている必要があります。バッファが空の場合、ビープ音が鳴る以外には何も実行されません。プロンプトの後にある 2 つの円記号が RIS モードを示します。
USER>\\
検索文字列はこの 2 つの円記号の間に表示され、一致するコマンドがあれば右側に表示されます。検索文字列に文字を入力すると、コマンド履歴バッファが履歴と同じ方向にスキャンされます。上矢印を入力すると、最も新しいコマンドから最も古いコマンドへスキャンされます。入力した文字列が含まれる最初のコマンドまで来ると、スキャンは停止します。コマンドを実行するには Enter を押します。
例えば、呼び出しバッファにコマンド W $J がある場合、'$' キーを入力すると、ObjectScript シェルに以下のように表示されます。
USER>\$\ W $J
代わりにコマンド W $ZV を見つけたい場合は、その次の文字 Z を入力します。
USER>\$Z\ W $ZV
ANSI 属性をサポートするオペレーティング・システムでは、呼び出されたコマンドに一致する文字が太字属性で表示されます。
以下を入力すると、RIS モードは終了します。
-
Enter – コマンドを選択してただちに実行します。
-
Ctrl-G – RIS モードをキャンセルして、コマンドを実行せずに前のプロンプトに戻ります。
-
編集キー (左矢印や Ctrl-A など) – 編集モードを起動して、呼び出されたコマンド行を編集できます。
-
上矢印または下矢印 – 検索によって選択されたコマンドを基準にして、その前または次のコマンドを選択します。
以下のいずれかを入力すると、検索モードで続行します。
-
非制御文字 – 入力した文字が検索文字列に付加され、その新しい文字列を含む以前のコマンドが検索されます。
-
Ctrl-R – 同じ検索文字列を含む以前のコマンドを検索します。
-
DEL または BS – 検索文字列の右端の文字を消去し、対応するコマンドに戻ります。
エイリアス
コマンドを発行するためのショートカットを定義するには、:alias コマンドに続けて、コマンドに割り当てる別名 (エイリアス)、そのエイリアスに割り当てるコマンドの順に入力します。セッションの残りの部分では、: 文字の後にエイリアスを入力することで該当のコマンドを発行できます。
次のセッション例では、1 行目で :alias コマンドを発行することにより、2 行目で文字列 :u を入力するだけで、ネームスペースを USER ネームスペースに切り替えることができます。
%SYS>:alias u set $namespace="USER"
%SYS>:u
USER>
エイリアスを使用してコマンドに引数を渡すこともできます。エイリアス定義の一部として、先頭に $ 文字を使用した番号付きのホスト変数を、コマンドの各引数のプレースホルダとして指定します。エイリアスに続けてホスト変数の番号の順序で引数の値を指定し、エイリアスを起動します。
例えば、以下のコマンドを発行すると、ファイルをロードするショートカット (load) が作成されます。ファイルのある場所を 1 番目の引数 ($1) で指定し、2 番目の引数 ($2) でフラグを指定します。
USER>:alias load Do $System.OBJ.Load("$1","$2")
このエイリアスを使用して、パス /directory/foobar.xml にある、c と k のフラグを設定したファイルをロードするには以下を入力します。
USER>:load /directory/foobar.xml ck
コマンドのプレースホルダ変数に ObjectScript 式の一部を使用することもできます。例えば、以下のコマンドでは $SELECT 関数を使用して、2 番目の引数を指定しない場合の既定の 2 番目の引数として "ck" を設定します。
USER>:alias load Do $System.OBJ.Load("$1", $S("$2"="":"ck", 1:"$2"))
エイリアス定義を削除するには、:unalias コマンドを、それに続けてエイリアス名を指定して入力します。引数を指定せずに :alias を入力すると、現在のセッションで定義されているエイリアスが一覧表示されます。
各セッションの起動時に ObjectScript シェルが自動的に設定するエイリアス定義のリストを提供することもできます。こういったエイリアスは、ホーム・ディレクトリ内の .iris_init という名前のファイルに (1 行に 1 つずつ) 定義します。このディレクトリは、具体的には、オペレーティング・システム内の現在のユーザのホーム・ディレクトリとなります。(例えば、Windows の場合、現在のユーザに対応する C:\Users\ サブディレクトリです。)