15.8. コンソールの使用
15.8.1. 利用可能なコマンド リンクのコピーリンクがクリップボードにコピーされました!
コンソールで利用可能なコマンドを一覧表示するには、help を使用できます。
すべてのコマンドの一覧と簡単な説明が表示されます。
tab キーを使用して、すべてのコマンドのクイック一覧を取得できます。
karaf@root()> Display all 294 possibilities? (y or n) ...
karaf@root()> Display all 294 possibilities? (y or n)
...
15.8.2. サブシェルおよび完了モード リンクのコピーリンクがクリップボードにコピーされました!
コマンドには、スコープと名前があります。たとえば、feature:list コマンドでは、feature が範囲で、list が名前となります。
Karaf はコマンドをスコープごとにグループ化します。スコープごとにサブシェルが形成されます。
完全修飾名 (scope:name) でコマンドを直接実行できます。
karaf@root()> feature:list ...
karaf@root()> feature:list
...
または、サブシェルに入り、コマンドコンテキストをサブシェルに入力します。
karaf@root()> feature karaf@root(feature)> list
karaf@root()> feature
karaf@root(feature)> list
サブシェル名 (ここでは feature) を入力して、サブシェルに直接入力できることに注意してください。サブシェルから別のシェルに直接切り替えることができます。
karaf@root()> feature karaf@root(feature)> bundle karaf@root(bundle)>
karaf@root()> feature
karaf@root(feature)> bundle
karaf@root(bundle)>
プロンプトには、() の間にある現在のサブシェルが表示されます。
exit コマンドは、親サブシェルに移動します。
karaf@root()> feature karaf@root(feature)> exit karaf@root()>
karaf@root()> feature
karaf@root(feature)> exit
karaf@root()>
補完モードは、タブキーの動作と help コマンドを定義します。
利用可能なモードは 3 つあります。
- GLOBAL
- FIRST
- SUBSHELL
etc/org.apache.karaf.shell.cfg ファイルの completionMode プロパティーを使用して、デフォルトの補完モードを定義できます。デフォルトには以下が含まれます。
completionMode = GLOBAL
completionMode = GLOBAL
shell:completion コマンドを使用して、(Karaf シェルコンソールの使用中に) 補完モードを即座に変更することもできます。
karaf@root()> shell:completion GLOBAL karaf@root()> shell:completion FIRST karaf@root()> shell:completion FIRST
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 と同じ動作です。
タブキーを入力すると、どのサブシェルで操作していても、補完ですべてのコマンドとすべてのエイリアスが表示されます。
FIRST 補完モードは、GLOBAL 補完モードの代わりとなります。
ルートレベルのサブシェルでタブキーを入力すると、(GLOBAL モードのように) すべてのサブシェルからのコマンドとエイリアスが表示されます。ただし、サブシェルでタブキーを入力すると、補完として、現在のサブシェルのコマンドのみが表示されます。
SUBSHELL 補完モードは、実際のサブシェルモードです。
ルートレベルでタブキーを入力すると、補完としてサブシェルコマンド (サブシェルに移動する) とグローバルエイリアスが表示されます。サブシェルで TAB キーを入力すると、補完として、現在のサブシェルのコマンドが表示されます。
15.8.3. UNIX のような環境 リンクのコピーリンクがクリップボードにコピーされました!
Karaf コンソールは、Unix のような完全な環境を提供します。
15.8.3.1. ヘルプまたは man リンクのコピーリンクがクリップボードにコピーされました!
利用できるすべてのコマンドを表示する help コマンドの使用方法についてすでに説明しました。
ただし、help コマンドや、help コマンドのエイリアスである man コマンドを使用して、コマンドの詳細を取得することもできます。コマンドの --help オプションを使用して、別のフォームを使用してコマンドのヘルプを取得することもできます。
以下のコマンドのようになります。
karaf@root()> help feature:list karaf@root()> man feature:list karaf@root()> feature:list --help
karaf@root()> help feature:list
karaf@root()> man feature:list
karaf@root()> feature:list --help
以下で、すべて同じヘルプ出力を生成します。
15.8.3.2. 補完 リンクのコピーリンクがクリップボードにコピーされました!
タブキーを入力すると、Karaf は補完しようとします。
- subshell
- commands
- aliases
- コマンド引数
- コマンドオプション
15.8.3.3. エイリアス リンクのコピーリンクがクリップボードにコピーされました!
エイリアスは、指定したコマンドに関連する別の名前です。
shell:alias コマンドは、新しいエイリアスを作成します。たとえば、実際の feature:list -i コマンドの list-installed-features エイリアスを作成するには、次の操作を実行できます。
ログイン時に、Apache Karaf コンソールは、エイリアスを作成できる etc/shell.init.script ファイルを読み取ります。これは、Unix の bashrc またはプロファイルファイルと似ています。
デフォルトでは利用可能なエイリアスをここで確認できます。
-
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 ファイルで独自のエイリアスを作成できます。
15.8.3.4. キーバインディング リンクのコピーリンクがクリップボードにコピーされました!
ほとんどの Unix 環境と同様に、Karaf コンソールはいくつかの主要なバインディングをサポートしています。
- 矢印キー (コマンド履歴内で移動する)
- CTRL-D (Karaf をログアウト/シャットダウンする)
- CTRL-R (以前実行したコマンドを検索する)
- CTRL-U (現在の行を削除する)
15.8.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
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
15.8.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 オプションを使用して、これらのコマンドの詳細とすべてのオプションを確認できます。
15.8.3.7. スクリプト リンクのコピーリンクがクリップボードにコピーされました!
Apache Karaf コンソールは、Unix の bash または csh と同様に完全なスクリプト言語をサポートします。
each (shell:each) コマンドは、リストで処理を繰り返すことができます。
karaf@root()> list = [1 2 3]; each ($list) { echo $it }
1
2
3
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
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
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()> ("hello world" toCharArray)
[h, e, l, l, o, , w, o, r, l, d]
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;
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!
karaf@root> shell:source script.txt
True!
script.txt に含まれる場所:
foo = "foo"
if { $foo equals "foo" } {
echo "True!"
}
foo = "foo"
if { $foo equals "foo" } {
echo "True!"
}
スペースは、スクリプトの記述時には重要です。たとえば、以下のスクリプトが正しくありません。
if{ $foo equals "foo" } ...
if{ $foo equals "foo" } ...
そして、次のようなエラーが発生します。
karaf@root> shell:source script.txt Error executing command: Cannot coerce echo "true!"() to any of []
karaf@root> shell:source script.txt
Error executing command: Cannot coerce echo "true!"() to any of []
if ステートメントの後にスペースがないためです。
エイリアスについては、etc/shell.init.script ファイルで init スクリプトを作成できます。エイリアスを使ってスクリプトに名前を付けることもできます。実際にはエイリアスは単なるスクリプトです。
詳細は、開発者ガイドのスクリプトセクションを参照してください。
15.8.4. セキュリティー リンクのコピーリンクがクリップボードにコピーされました!
Apache Karaf コンソールは、ロールベースアクセス制御 (RBAC) のセキュリティーメカニズムをサポートします。コンソールに接続するユーザー、ユーザーのグループおよびロール、コマンドの実行パーミッションに応じて定義でき、引数として指定可能な値を制限できます。
コンソールのセキュリティーは、このユーザーガイドの セキュリティーセクション を参照してください。