Menu Close

16.9.2. サブシェルおよび補完モード

コマンドにはスコープと名前があります。たとえば、コマンド feature:list には scope として 機能があり、名前として リストします。

Karaf はコマンドをスコープによって「グループ化」します。各スコープはサブシェルを形成します。

完全修飾名 (scope:name) でコマンドを直接実行できます。

karaf@root()> feature:list
...

または、サブシェルに入り、コンテキストなコマンドを入力します。

karaf@root()> feature
karaf@root(feature)> list

サブシェル名(ここでは 機能)を入力してサブシェルに直接入力できます。サブシェルから別のサブシェルに直接「切り替える」ことができます。

karaf@root()> feature
karaf@root(feature)> bundle
karaf@root(bundle)>

プロンプトでは () の間に現在のサブシェルが表示されます。

exit コマンドは親サブシェルに移動します。

karaf@root()> feature
karaf@root(feature)> exit
karaf@root()>

補完モードは、Tab キーおよび help コマンドの動作を定義します。

利用可能なモードは 3 つあります。

  • GLOBAL
  • FIRST
  • SUBSHELL

etc/org.apache.karaf.shell.cfg ファイルの completionMode プロパティーを使用してデフォルトの完了モードを定義できます。デフォルトでは、以下があります。

completionMode = GLOBAL

shell:completion コマンドを使用して、完了モードを「fly」に変更することもできます(Karaf シェルコンソールを使用)。

karaf@root()> shell:completion
GLOBAL
karaf@root()> shell:completion FIRST
karaf@root()> shell:completion
FIRST

shell:completion は、現在の完了モードについて通知できます。また、必要な新しい補完モードを提供することもできます。

GLOBAL 補完モードは、Karaf 4.0.0 のデフォルトモードです (主に遷移用) 。

GLOBAL モードは実際にはサブシェルを使用しません。以前のバージョンの Karaf と同じ動作です。

tab キーを入力すると、どのサブシェルでも、すべてのコマンドとすべてのエイリアスが表示されます。

karaf@root()> <TAB>
karaf@root()> Display all 273 possibilities? (y or n)
...
karaf@root()> feature
karaf@root(feature)> <TAB>
karaf@root(feature)> Display all 273 possibilities? (y or n)

FIRST 補完モードは GLOBAL 補完モードに代わるものです。

ルートレベルのサブシェルで Tab キーを入力すると、すべてのサブシェルからコマンドとエイリアスが表示されます (GLOBAL モードのように)。ただし、サブシェルにいる場合に Tab キーを入力すると、補完では現在のサブシェルのコマンドのみが表示されます。

karaf@root()> shell:completion FIRST
karaf@root()> <TAB>
karaf@root()> Display all 273 possibilities? (y or n)
...
karaf@root()> feature
karaf@root(feature)> <TAB>
karaf@root(feature)>
info install list repo-add repo-list repo-remove uninstall version-list
karaf@root(feature)> exit
karaf@root()> log
karaf@root(log)> <TAB>
karaf@root(log)>
clear display exception-display get log set tail

SUBSHELL 補完モードは、実際のサブシェルモードです。

ルートレベルで Tab キーを入力すると、サブシェルコマンド (サブシェルに移動する) とグローバルエイリアスが表示されます。サブシェルに入り、Tab キーを入力すると、補完では現在のサブシェルのコマンドが表示されます。

karaf@root()> shell:completion SUBSHELL
karaf@root()> <TAB>
karaf@root()>
* bundle cl config dev feature help instance jaas kar la ld lde log log:list man package region service shell ssh system
karaf@root()> bundle
karaf@root(bundle)> <TAB>
karaf@root(bundle)>
capabilities classes diag dynamic-import find-class headers info install list refresh requirements resolve restart services start start-level stop
uninstall update watch
karaf@root(bundle)> exit
karaf@root()> camel
karaf@root(camel)> <TAB>
karaf@root(camel)>
backlog-tracer-dump backlog-tracer-info backlog-tracer-start backlog-tracer-stop context-info context-list context-start context-stop endpoint-list route-info route-list route-profile route-reset-stats
route-resume route-show route-start route-stop route-suspend