LoginSignup
1
0

More than 3 years have passed since last update.

[oci] CLIでのコマンドのタブ補完が効くようになりました

Last updated at Posted at 2021-04-17

ちょっとした仕様拡張ですが、OCI CLI (Oracle Cloud Infrastructure Command Line Interface)での第2引数以降がPowerShell版で自動補完されるようになりました。

コマンドを途中まで打ってタブを打つと、残りが補完されて表示されるアレです。
これまでは、CLI はコマンドは引き数を熟知していないと、なかなか使えませんでしたが、これで少しハードルが下がったと思います。

CLIの動き

cliの文法は
oci <service> <type> <action> <options>
の4つの引数で成立していますが、自動補完では、それぞれ全てうろ覚えで入力できます。
例えば oci iam user list と打ちたい場合は、
oci ia<タブ> us<タブ> li<タブ> と打つだけで、あとは補完されます。

自動補完のしくみ

OciTabExpansion.ps1 というコードが新規に追加されています。
それが 'Microsoft.PowerShell_profile.ps1' というpowershell起動時に自動実行される起動スクリプトの最終行に追記されていて、呼び出される仕組みになっています。
oci cliがインストールされたPowershell上で、$profile という環境変数が示すファイルを編集してみると、最終行に
. "C:\Users<ユーザーID>\lib\oracle-cli\Lib\site-packages\oci_cli\bin\OciTabExpansion.ps1"
のような形式でタブ拡張機能が追加されていることが分かります。
このOciTabExpansion.ps1の中を覗いてみると、どのようにしてタブ補完しているのかが分かります。
ここで、一度なにかociコマンドを起動してみた後に

PS > Write-host $ociTopLevelCommands

と打つと、OCIが提供するサービス一覧が出力されます。今は55種類のサービスが提供されていることが分かります。

analytics
announce
api-gateway
application-migration
audit
<以下略>

さらに

PS > Write-Host $ociSubcommands

と打ってみると、今度はサブコマンド一覧が取得できます。

Name Value


db autonomous-database-backup create get list
email sender change-compartment create delete get list update
data-catalog entity create delete get list update
data-catalog attribute-tag create delete get list
ocvs work-request-error list
network virtual-circuit-pub... bulk-add bulk-delete list
ce cluster cluster-options node-pool node-pool-options work-request work-request-error...
db node get list reset soft-reset start stop
ocvs work-request get list
db db-home create delete get list
<以下略>

NameとValueの形式で、格納されています。NameのカラムでTopLevelCommandとSubCommandが関連付けられていて、Valueカラムには動詞が格納されているようです。
これで、タブ補完の挙動のしくみが理解できます。

oci db autonomous-database-backup create と打つには、
oci db autoタブ crタブ で足りることが分かります。

自分がよく使いそうなociの第一引数だけ覚えておけば、なんとかなりそうですね。

補足情報

コマンドライン・インタフェース(CLI)

oci-cliのgithub

CLIのpowershell install バッチ

powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))"

今回確認したcliのversion

oci -v での確認結果: 2.21.1

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0