16.9. コンソールの使用
16.9.1. 利用可能なコマンド
コンソールで利用可能なコマンドを一覧表示するには、help
を使用できます。
karaf@root()> help bundle Enter the subshell bundle:capabilities Displays OSGi capabilities of a given bundles. bundle:classes Displays a list of classes/resources contained in the bundle bundle:diag Displays diagnostic information why a bundle is not Active bundle:dynamic-import Enables/disables dynamic-import for a given bundle. bundle:find-class Locates a specified class in any deployed bundle bundle:headers Displays OSGi headers of a given bundles. bundle:id Gets the bundle ID. ...
すべてのコマンドの一覧と簡単な説明が表示されます。
tab キーを使用して、すべてのコマンドのクイック一覧を取得できます。
karaf@root()> Display all 294 possibilities? (y or n) ...
16.9.2. サブシェルおよび完了モード
コマンドには、スコープと名前があります。たとえば、feature:list
コマンドでは、feature
が範囲で、list
が名前となります。
Karaf はコマンドをスコープごとにグループ化します。スコープごとにサブシェルが形成されます。
完全修飾名 (scope:name) でコマンドを直接実行できます。
karaf@root()> feature:list ...
または、サブシェルに入り、コマンドコンテキストをサブシェルに入力します。
karaf@root()> feature karaf@root(feature)> list
サブシェル名 (ここでは feature
) を入力して、サブシェルに直接入力できることに注意してください。サブシェルから別のシェルに直接切り替えることができます。
karaf@root()> feature karaf@root(feature)> bundle karaf@root(bundle)>
プロンプトには、() の間にある現在のサブシェルが表示されます。
exit
コマンドは、親サブシェルに移動します。
karaf@root()> feature karaf@root(feature)> exit karaf@root()>
補完モードは、タブキーの動作と help コマンドを定義します。
利用可能なモードは 3 つあります。
- GLOBAL
- FIRST
- SUBSHELL
etc/org.apache.karaf.shell.cfg
ファイルの completionMode プロパティーを使用して、デフォルトの補完モードを定義できます。デフォルトには以下が含まれます。
completionMode = GLOBAL
shell:completion
コマンドを使用して、(Karaf シェルコンソールの使用中に) 補完モードを即座に変更することもできます。
karaf@root()> shell:completion GLOBAL karaf@root()> shell:completion FIRST karaf@root()> shell:completion FIRST
shell:completion
は現在使用されている補完モードについて通知できます。必要な新しい補完モードを指定することもできます。
GLOBAL 補完モードは Karaf 4.0.0 のデフォルトモードです (主に移行の目的で)。
GLOBAL モードは、実際には subshell を使用せず、以前のバージョンの Karaf と同じ動作です。
タブキーを入力すると、どのサブシェルで操作していても、補完ですべてのコマンドとすべてのエイリアスが表示されます。
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 補完モードの代わりとなります。
ルートレベルのサブシェルでタブキーを入力すると、(GLOBAL モードのように) すべてのサブシェルからのコマンドとエイリアスが表示されます。ただし、サブシェルでタブキーを入力すると、補完として、現在のサブシェルのコマンドのみが表示されます。
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 キーを入力すると、補完として、現在のサブシェルのコマンドが表示されます。
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
16.9.3. UNIX のような環境
Karaf コンソールは、Unix のような完全な環境を提供します。
16.9.3.1. ヘルプまたは man
利用できるすべてのコマンドを表示する help
コマンドの使用方法についてすでに説明しました。
ただし、help
コマンドや、help
コマンドのエイリアスである man
コマンドを使用して、コマンドの詳細を取得することもできます。コマンドの --help
オプションを使用して、別のフォームを使用してコマンドのヘルプを取得することもできます。
以下のコマンドのようになります。
karaf@root()> help feature:list karaf@root()> man feature:list karaf@root()> feature:list --help
以下で、すべて同じヘルプ出力を生成します。
DESCRIPTION feature:list Lists all existing features available from the defined repositories. SYNTAX feature:list [options] OPTIONS --help Display this help message -o, --ordered Display a list using alphabetical order -i, --installed Display a list of all installed features only --no-format Disable table rendered output
16.9.3.2. 補完
タブキーを入力すると、Karaf は補完しようとします。
- subshell
- commands
- aliases
- コマンド引数
- コマンドオプション
16.9.3.3. エイリアス
エイリアスは、指定したコマンドに関連する別の名前です。
shell:alias
コマンドは、新しいエイリアスを作成します。たとえば、実際の feature:list -i
コマンドの list-installed-features
エイリアスを作成するには、次の操作を実行できます。
karaf@root()> alias "list-features-installed = { feature:list -i }" karaf@root()> list-features-installed Name | Version | Required | State | Repository | Description ------------------------------------------------------------------------------------------------------------------------------ feature | 4.0.0 | x | Started | standard-4.0.0 | Features Support shell | 4.0.0 | x | Started | standard-4.0.0 | Karaf Shell deployer | 4.0.0 | x | Started | standard-4.0.0 | Karaf Deployer bundle | 4.0.0 | x | Started | standard-4.0.0 | Provide Bundle support config | 4.0.0 | x | Started | standard-4.0.0 | Provide OSGi ConfigAdmin support diagnostic | 4.0.0 | x | Started | standard-4.0.0 | Provide Diagnostic support instance | 4.0.0 | x | Started | standard-4.0.0 | Provide Instance support jaas | 4.0.0 | x | Started | standard-4.0.0 | Provide JAAS support log | 4.0.0 | x | Started | standard-4.0.0 | Provide Log support package | 4.0.0 | x | Started | standard-4.0.0 | Package commands and mbeans service | 4.0.0 | x | Started | standard-4.0.0 | Provide Service support system | 4.0.0 | x | Started | standard-4.0.0 | Provide System support kar | 4.0.0 | x | Started | standard-4.0.0 | Provide KAR (KARaf archive) support ssh | 4.0.0 | x | Started | standard-4.0.0 | Provide a SSHd server on Karaf management | 4.0.0 | x | Started | standard-4.0.0 | Provide a JMX MBeanServer and a set of MBeans in
ログイン時に、Apache Karaf コンソールは、エイリアスを作成できる etc/shell.init.script
ファイルを読み取ります。これは、Unix の bashrc またはプロファイルファイルと似ています。
ld = { log:display $args } ; lde = { log:exception-display $args } ; la = { bundle:list -t 0 $args } ; ls = { service:list $args } ; cl = { config:list "(service.pid=$args)" } ; halt = { system:shutdown -h -f $args } ; help = { *:help $args | more } ; man = { help $args } ; log:list = { log:get ALL } ;
デフォルトでは利用可能なエイリアスをここで確認できます。
-
ld
はログを表示する短縮形式です (log:display
コマンドのエイリアス)。 -
lde
は例外を表示する短縮形式です (log:exception-display
コマンドのエイリアス)。 -
la
はすべてのバンドルを一覧表示するための短縮形式です (bundle:list -t 0
コマンドのエイリアス) 。 -
ls
はすべてのサービスを一覧表示する短縮形式です (service:list
コマンドのエイリアス)。 -
cl
は全設定を一覧表示するための短縮形式です (config:list
コマンドのエイリアス)。 -
halt
は Apache Karaf をシャットダウンするための短縮形式です (system:shutdown -h -f
コマンドへのエイリアス)。 -
help
は、ヘルプを表示する短縮形式です (*:help
コマンドのエイリアス)。 -
man
は help と同じです (help
コマンドのエイリアス)。 -
log:list
はすべてのロガーおよびレベルを表示します (log:get ALL
コマンドのエイリアス)。
etc/shell.init.script
ファイルで独自のエイリアスを作成できます。
16.9.3.4. キーバインディング
ほとんどの Unix 環境と同様に、Karaf コンソールはいくつかの主要なバインディングをサポートしています。
- 矢印キー (コマンド履歴内で移動する)
- CTRL-D (Karaf をログアウト/シャットダウンする)
- CTRL-R (以前実行したコマンドを検索する)
- CTRL-U (現在の行を削除する)
16.9.3.5. パイプ
あるコマンドの出力を別の入力としてパイプできます。これは、| 文字を使用したパイプです。
karaf@root()> feature:list |grep -i war pax-war | 4.1.4 | | Uninstalled | org.ops4j.pax.web-4.1.4 | Provide support of a full WebContainer pax-war-tomcat | 4.1.4 | | Uninstalled | org.ops4j.pax.web-4.1.4 | war | 4.0.0 | | Uninstalled | standard-4.0.0 | Turn Karaf as a full WebContainer blueprint-web | 4.0.0 | | Uninstalled | standard-4.0.0 | Provides an OSGI-aware Servlet ContextListener fo
16.9.3.6. grep、more、find など
Karaf コンソールでは、Unix 環境に似たコアコマンドを使用できます。
-
shell:alias
は既存のコマンドのエイリアスを作成します。 -
shell:cat
はファイルまたは URL の内容を表示します。 -
shell:clear
は現在のコンソール表示の消去します。 -
shell:completion
は現在の補完モードを表示または変更します。 -
shell:date
は現在の日付を表示します (必要に応じて形式を使用)。 -
shell:each
は引数のリストでクロージャーを実行します。 -
shell:echo
は引数を標準出力にエコーおよび出力します。 -
shell:edit
は現在のファイルまたは URL のテキストエディターを呼び出します。 -
shell:env
はシェルセッション変数の値を表示または設定します。 -
shell:exec
はシステムコマンドを実行します。 -
shell:grep
は指定のパターンに一致する行を出力します。 -
shell:head
は入力の最初の行を表示します -
shell:history
はコマンド履歴を出力します。 -
shell:if
はスクリプトで条件 (if、then、else blocks) の使用を可能にします。 -
shell:info
は現在の Karaf インスタンスに関するさまざまな情報を出力します。 -
shell:java
は Java アプリケーションを実行します。 -
shell:less
ファイルページャーです。 -
shell:logout
は現行セッションからシェルの切断します。 -
shell:more
はファイルページャーです -
shell:new
は新しい Java オブジェクトを作成します。 -
shell:printf
は引数をフォーマットして出力します -
shell:sleep
は少し眠ってから目を覚ます -
shell:sort
はすべてのファイルのソートされた連結を標準出力に書き込みます。 -
shell:source
はスクリプトに含まれるコマンドを実行します。 -
shell:stack-traces-print
は、コマンドの実行によって例外が発生すると、コンソールで完全なスタックトレースを出力します。 -
shell:tac
は STDIN をキャプチャーし、文字列として返します。 -
shell:tail
は入力の最後の行を表示します。 -
shell:threads
は現在のスレッドを出力します。 -
shell:watch
は定期的にコマンドを実行し、出力を更新します。 -
shell:wc
は各ファイルの改行、単語、およびバイト数を出力します。 -
shell:while
は条件が true である間にループします。
コマンドの完全修飾名を使用する必要はありませんが、コマンド名が一意であれば、直接使用できます。つまり、shell:head の代わりに head を使用できます。
ここでも、help
コマンドまたは --help
オプションを使用して、これらのコマンドの詳細とすべてのオプションを確認できます。
16.9.3.7. スクリプト
Apache Karaf コンソールは、Unix の bash または csh と同様に完全なスクリプト言語をサポートします。
each
(shell:each
) コマンドは、リストで処理を繰り返すことができます。
karaf@root()> list = [1 2 3]; each ($list) { echo $it } 1 2 3
同じループを shell:while
コマンドで記述できます。
karaf@root()> a = 0 ; while { %((a+=1) <= 3) } { echo $a } 1 2 3
(前述の例のように) 一覧を独自に作成することも、一部のコマンドでもリストを返すこともできます。
コンソールは、$list
でアクセス可能な list
という名前のセッション変数を作成したことに注意してください。
$it
変数は、現在のオブジェクトに対応する暗黙的な変数です (ここではリストの現在の反復処理された値)。
[]
でリストを作成すると、Apache Karaf コンソールは Java ArrayList を作成します。つまり、ArrayList オブジェクトで利用可能なメソッド (例: get または size) を使用できます。
karaf@root()> list = ["Hello" world]; echo ($list get 0) ($list get 1) Hello world
ここで、オブジェクトのメソッドを呼び出すことは、(object method argument)
を直接使用することに注意してください。($list get 0)
は $list.get(0)
を意味します。$list
は ArrayList です。
class
表記には、オブジェクトの詳細が表示されます。
karaf@root()> $list class ... ProtectionDomain ProtectionDomain null null <no principals> java.security.Permissions@6521c24e ( ("java.security.AllPermission" "<all permissions>" "<all actions>") ) Signers null SimpleName ArrayList TypeParameters [E]
指定のタイプに変数をキャストすることができます。
karaf@root()> ("hello world" toCharArray) [h, e, l, l, o, , w, o, r, l, d]
失敗すると、キャストの例外が表示されます。
karaf@root()> ("hello world" toCharArray)[0] Error executing command: [C cannot be cast to [Ljava.lang.Object;
shell:source
コマンドを使用して、スクリプトを呼び出しすることができます。
karaf@root> shell:source script.txt True!
script.txt
に含まれる場所:
foo = "foo" if { $foo equals "foo" } { echo "True!" }
スペースは、スクリプトの記述時には重要です。たとえば、以下のスクリプトが正しくありません。
if{ $foo equals "foo" } ...
そして、次のようなエラーが発生します。
karaf@root> shell:source script.txt Error executing command: Cannot coerce echo "true!"() to any of []
if
ステートメントの後にスペースがないためです。
エイリアスについては、etc/shell.init.script
ファイルで init スクリプトを作成できます。エイリアスを使ってスクリプトに名前を付けることもできます。実際にはエイリアスは単なるスクリプトです。
詳細は、開発者ガイドのスクリプトセクションを参照してください。
16.9.4. セキュリティー
Apache Karaf コンソールは、ロールベースアクセス制御 (RBAC) のセキュリティーメカニズムをサポートします。コンソールに接続するユーザー、ユーザーのグループおよびロール、コマンドの実行パーミッションに応じて定義でき、引数として指定可能な値を制限できます。
コンソールのセキュリティーは、このユーザーガイドの セキュリティーセクション を参照してください。