さっとんです。
昨日、こちらのブログ記事を投稿しました。
「Linuxを勉強するメリットとは?」という内容になります。
今回はLinuxにも使用されるCLI(コマンドラインインタフェース)とは何か?
こちらのテーマについて話をしていきたいと思います。
このような疑問点をお持ちの方に向けた内容となります。
・CLI(コマンドラインインタフェース)とは?
・CLI(コマンドラインインタフェース)を使用するメリットとは?
では、いきます。
CLI(コマンドラインインタフェース)とは?
CLI(コマンドラインインタフェース)とは、このような意味となります。
・全ての操作をキーボードのみで行う画面のこと
例)Linux/PowerShell/Azure Cli/CiscoのSwitch等
・CUI(キャラクターユーザーインターフェイス)と同じ意味
CLIは、このような画面になります。
こちらは、AzureCLIにて操作した際の画面となります。
例えば、映画やドラマにてハッカーが黒い画面にキーボードをカタカタ入力するシーンがあります。
ハッキングをする際に使用している画面もこの「CLI」となります。
このように全ての操作をキーボードにて実施する画面を「CLI」と言います。
CLI(コマンドラインインタフェース)を使用するメリットとは?
CLI(コマンドラインインタフェース)を使用するメリットについて紹介していきます。
ディレクトリ移動/ファイル確認が効率的に可能
WindowsServer等のGUI画面の場合は、
ファイルを確認する際にこのような手順を踏むと思います。
①必要なフォルダを探す/フォルダが存在する階層まで開く
②ファイルをダブルクリック(もしくは右クリック)
皆さんもWindowsPC等を使用する際に経験していると思いますが、
階層が深ければ5分以上かかることもあります。
しかし、CLIの場合はコマンド一発にてファイル確認が可能です。
今回は、Linux(CentOS)の画面を例に紹介していきたいと思います。
例:
・ファイル確認
コマンド)
cat /root/test/test.txt
実行結果)
・ディレクトリ移動
コマンド)
cd /root/test
実行結果)
こちらの例の通り、コマンド一発にて操作可能です。
「ディレクトリ/ファイルを探すのは時間がかかるんじゃないの?」
こちらもファイル検索コマンド一発になります。
Linuxを例に紹介します。
コマンド)
find / -name test.txt
実行結果)
このように、CLI(コマンドラインインタフェース)の場合は、
ディレクトリ移動~ファイル確認迄を効率的に実施することが可能です。
自動化可能であること
CLIの場合は、構築作業や運用業務を自動化することが可能です。
自動化する際に使用するコードの具体例を紹介します。
スクリプト
・bash
・PowerShell
Infrastructure as Code
・Ansible
・ServerSpec
・Chef
・Terraform
他にも多くのコードがあると思いますが、知っているものを紹介しました。
一つ「Ansible」を例に挙げます。
「Ansible」では、複数のサーバーをssh接続にて一括で設定することが可能です。
図で表すとこのような形になります。
コードの事前用意は必要にはなりますが、
こちらのコマンドを一発入力するだけで設定を流すことが可能です。
例)
ansible-playbook -i hosts ./task/test1.yml
このように、CLIの場合は構築作業や運用作業を自動化させることが可能です。
効率的に作業が可能
CLIの場合は、GUI以上に効率的に作業をすることが可能です。
基本的にコマンドのコピー&ペーストにて設定・運用作業を実施することが可能です。
そのため、事前にコマンドをしっかり作りこんでおけば、設定作業を効率的に実施することが可能です。
WindowsServerを例に上げます。
GUI画面にてホスト名を設定する場合は、こちらの画面にたどり着く必要があります。
しかし、PowerShellにて設定する場合はこちらのコマンドを一発実行するのみです。
Rename-Computer -NewName testad01 -Force -Restart
WindowsServerの設定については、こちらのページに詳しく記載しております。
GUI設定
CLI(PowerShell)
このように、CLI画面では効率的に作業をすることが可能です。
CLI(コマンドラインインタフェース)を使用するデメリットとは?
コマンドを学習する必要がある
コマンドそのものを学習することに手間がかかります。
僕も過去にLinux運用案件に参画した際は、コマンドを一から覚えました。
最初は、「w」や「top」等の意味もよくわからない状態でした。
しかし、一度覚えてしまえばなんとかなるケースが大きかったです。
例えば、PowerShellや仮想基盤(VMware)にて作業を行う場合、
覚えたLinuxコマンドを置き換えて考えることが可能です。
僕がLinuxコマンドを勉強していた頃は、こちらの書籍を見ながら手を動かして学習しておりました。
※いわゆる「あずき本」と呼ばれているものです。
このようにコマンドを学習する必要はあります。
しかし、一度覚えてしまえば他の技術に応用できることが多いです。
コマンドの入力ミスに気を付ける必要がある
コマンドの入力ミスに気を付ける必要があります。
誤って「reboot」(再起動)等のクリティカルなコマンドを実行しないように注意をする必要があります。
過去にいた現場で、他メンバーにて「誤ってサービス再起動をしてしまった」というミスがありました。
このように入力ミスをすることがあります。
しかし、WindowsServer等のGUI画面上の操作でもミスをすることがあります。
例えば、このような形のミスになります。
「手が滑ってサーバーをシャットダウンしてしまった!」
「知らないbatファイルをクリックしてしまった!」
実際に起こりうるミスです。
コマンドの入力ミスに気を付けるということは非常に大事なことになりますが、GUIも同様に操作ミスは起こりえます。
扱う技術は何であろうが、作業前には必ず確認しましょう。
まとめ
CLI(コマンドラインインターフェース)は「全ての操作をキーボードにて実施する画面」のこと
CLIのメリット
・ディレクトリ移動/ファイル確認が効率的に可能
・効率的に作業が可能
・自動化可能であること
CLIのデメリット
・コマンドを学習する必要がある
・コマンドの入力ミスに気を付ける必要がある
ここまで読んで頂き有難うございました!
このように、インフラエンジニアに関するキャリアハックや技術について発信しております。