CLI における中心的な原則は、コマンドが実行されているコンテキストです。このコンテキストによって、システムのどの要素を管理できるか、およびどのコマンドを使用できるかが規定されます。コンテキストには、各コンテキスト自体に入れ子のコンテキストが含まれている可能性のあるツリー構造があり、一般には、この構造によって BUI 内のビューの構造がミラー化されています。
ログイン時の初期コンテキストはルートコンテキストであり、すべてのコンテキストの親または上位コンポーネントとして機能します。コンテキストに移動するには、そのコンテキストの名前をコマンドとして実行します。たとえば、ブラウザ内の Chapter 4, ネットワーク構成ビューで使用可能な機能は、CLI の configuration コンテキストで使用できます。次のように、ルートコンテキストから直接入力してこのコンテキストにアクセスできます。
dory:> configuration dory:configuration>
プロンプト内のコロンと大なり記号の間にコンテキストが表示されており、プロンプトがコンテキストを反映して変更されることに注意してください。
show コマンドは子コンテキストを表示します。たとえば、configuration コンテキストから実行すると、次のようになります。
dory:configuration> show
Children:
                             net => Configure networking
                        services => Configure services
                         version => Display system version
                           users => Configure administrative users
                           roles => Configure administrative roles
                     preferences => Configure user preferences
                          alerts => Configure alerts
                         storage => Configure Storage
				これらの子コンテキストは、Chapter 4, ネットワーク構成、Chapter 11, ZFSSA サービスおよび Chapter 7, ユーザー構成、設定Chapter 8, ZFSSA の設定などの、ブラウザ内の Chapter 6, Storage Area Network の構成ビューの下で使用可能なビューに対応しています。これらの子コンテキストのいずれかを選択するには、その名前を入力します。
dory:configuration> preferences dory:configuration preferences>
中間のコンテキストを空白で区切って指定することによって、上位コンテキストから直接下位コンテキストに移動できます。たとえば、ルートコンテキストから直接 configuration preferences に移動するには、単に次のように入力します。
dory:> configuration preferences dory:configuration preferences>
一部の子コンテキストは、ブラウザ内の固定されたビューにではなく、ユーザーまたはシステムのどちらかによって作成された動的なエンティティーに対応しているという点で動的です。これらのコンテキストに移動するには、select コマンドを使用し、そのあとに動的コンテキストの名前を指定します。特定のコンテキスト内に含まれている動的コンテキストの名前は、list コマンドを使用して表示されます。たとえば、users コンテキストは静的コンテキストですが、各ユーザーは独自の動的コンテキストです。
dory:> configuration users dory:configuration users> list NAME USERNAME UID TYPE John Doe bmc 12345 Dir Super-User root 0 Loc
bmc という名前のユーザーを選択するには、コマンド select bmc を発行します。
dory:configuration users> select bmc dory:configuration users bmc>
一部のコンテキストでは select と destroy を交互に使用すると、プロパティーに基づいてエンティティーを選択できます。たとえば、次のコマンドを発行することによって、maintenance logs system コンテキストで reboot モジュールによって発行されたログエントリを選択できます。
dory:maintenance logs system> select module=reboot 
dory:maintenance logs system entry-034> show
Properties:                                   
  timestamp = 2010-8-14 06:24:41
     module = reboot
   priority = crit
       text = initiated by root on /dev/console syslogd: going down on signal 15
				ほかのコマンドと同様に、select をコンテキスト変更コマンドに追加することもできます。たとえば、ルートコンテキストから bmc という名前のユーザーを選択するには、次のコマンドを実行します。
dory:> configuration users select bmc dory:configuration users bmc>
last コマンドを使用すると、前に選択または作成したコンテキストに移動できます。このコマンドは現時点では、レプリケーションアクションのコンテキストにのみ実装されています。
次の例ではレプリケーションアクションを作成し、last および get id コマンドを使用してレプリケーションアクション ID を取得します。そのあと別のアクションを選択し、last および get id コマンドを使用して、最後に実行したレプリケーションアクションの ID を取得します。
dory:shares p1/share replication> list
           TARGET          STATUS     NEXT
action-000  oakmeal         idle       Sync now
action-001  dory            idle       Sync now
dory:shares p1/share replication> create
dory:shares p1/share action (uncommitted)> set target=dory
                       target = dory (uncommitted)
dory:shares p1/share action (uncommitted)> set pool=p0
                         pool = p0 (uncommitted)
dory:shares p1/share action (uncommitted)> commit
dory:shares p1/share replication> last
dory:shares p1/share action-002> get id
                           id = 7034367a-d4d8-e26f-fa93-c3b454e3b595
dory:shares p1/share action-002> done
dory:shares p1/share replication> select action-000
dory:shares p1/share action-000> get id
                           id = 9895d9f4-7b23-ebe1-faf2-d85a581e3dff
dory:shares p1/share action-000> done
dory:shares p1/share replication> last get id
                           id = 9895d9f4-7b23-ebe1-faf2-d85a581e3dff
dory:shares p1/share replication>