【ITニュース解説】DevOps CLI Secrets: 20 Commands That Will Transform Your Daily Workflow
2025年09月07日に「Medium」が公開したITニュース「DevOps CLI Secrets: 20 Commands That Will Transform Your Daily Workflow」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
DevOpsエンジニア向け、日々の業務効率を劇的に向上させる20個のCLIコマンドを紹介。ファイル操作、プロセス管理、ネットワーク診断、クラウドサービス連携など、初心者からプロまで役立つ実用的なコマンドを厳選。これらのコマンドを習得することで、作業速度と正確性を高め、より高度なDevOpsタスクに取り組めるようになる。
ITニュース解説
この記事は、DevOpsエンジニアが日々の業務を効率化するために役立つ20個のコマンドラインインターフェース(CLI)のテクニックを紹介している。システムエンジニアを目指す初心者向けに、それぞれのコマンドがどのような状況で役立ち、どのように活用できるのかを解説する。
まず、基本となるのはaliasコマンドだ。これは、長いコマンドや複雑なオプションを伴うコマンドに対して、短い別名をつける機能だ。例えば、kubectl get pods --all-namespacesというコマンドを頻繁に使う場合、alias kgpa='kubectl get pods --all-namespaces'と設定することで、以降はkgpaと入力するだけで同じコマンドを実行できるようになる。これにより、タイプミスを防ぎ、時間を大幅に節約できる。
次に、コマンド履歴を効果的に活用する方法だ。historyコマンドを使うと、過去に実行したコマンドの一覧が表示される。!nと入力すると、n番目に表示されたコマンドを再実行できる。また、!!は直前に実行したコマンドを再実行する。さらに、Ctrl+Rを使うと、コマンド履歴を検索できる。これにより、以前に使用したコマンドを簡単に見つけ出し、再利用できる。
パイプ処理(|)は、あるコマンドの出力を別のコマンドの入力として渡す機能だ。例えば、ps aux | grep <プロセス名>というコマンドは、システム上で実行中のプロセス一覧を表示し、その中から特定のプロセス名を含む行を抽出する。grepはテキスト検索を行うコマンドで、パイプ処理と組み合わせることで、必要な情報を効率的に絞り込むことができる。
xargsコマンドは、標準入力から受け取ったデータを引数として、別のコマンドを実行する。例えば、find . -name "*.log" | xargs gzipというコマンドは、現在のディレクトリ以下にある全ての.logファイルを検索し、それらをgzipコマンドで圧縮する。findコマンドで見つけたファイル名をxargsがgzipコマンドの引数として渡すことで、複数のファイルを一度に処理できる。
リダイレクト(>、>>)は、コマンドの出力をファイルに書き出す機能だ。>は既存のファイルを上書きし、>>は既存のファイルに追記する。例えば、ls -l > file_list.txtというコマンドは、現在のディレクトリにあるファイルの一覧をfile_list.txtというファイルに書き出す。
teeコマンドは、標準出力をファイルに書き出すと同時に、ターミナルにも表示する。例えば、command | tee output.txtというコマンドは、commandの実行結果をoutput.txtに保存しつつ、その内容をターミナルにも表示する。これにより、ログの記録とリアルタイムでの状況確認を同時に行うことができる。
watchコマンドは、指定したコマンドを定期的に実行し、その結果をターミナルに表示する。例えば、watch -n 1 kubectl get podsというコマンドは、1秒ごとにkubectl get podsコマンドを実行し、Podの状態を監視する。これにより、システムの状態変化をリアルタイムで把握できる。
ssh-copy-idコマンドは、公開鍵をリモートホストにコピーする。これにより、パスワードなしでSSH接続が可能になる。例えば、ssh-copy-id user@remote_hostというコマンドは、ローカルマシンの公開鍵をremote_hostのuserアカウントの.ssh/authorized_keysファイルに追加する。
scpコマンドは、ローカルマシンとリモートマシン間でファイルを安全にコピーする。例えば、scp local_file.txt user@remote_host:/path/to/destinationというコマンドは、local_file.txtをremote_hostの/path/to/destinationディレクトリにコピーする。
rsyncコマンドは、ファイルやディレクトリを効率的に同期させる。scpと同様にファイルをコピーできるが、差分のみを転送するため、大きなファイルの同期に適している。例えば、rsync -avz local_directory user@remote_host:/path/to/destinationというコマンドは、local_directoryをremote_hostの/path/to/destinationディレクトリに同期する。
jqコマンドは、JSON形式のデータを処理するためのコマンドラインツールだ。例えば、APIから取得したJSONデータを整形したり、特定のキーの値を取得したりする際に役立つ。curl -s https://api.example.com/data | jq '.key'というコマンドは、APIから取得したJSONデータからkeyというキーの値を取得する。
tmuxまたはscreenは、ターミナルマルチプレクサと呼ばれるツールで、一つのターミナル内で複数のセッションを管理できる。これにより、複数のタスクを同時に実行したり、SSH接続が切断されても処理を継続させたりできる。
kubectlは、Kubernetesクラスタを管理するためのコマンドラインツールだ。kubectl get pods、kubectl create deployment、kubectl apply -f deployment.yamlなど、様々なコマンドを使って、Podの管理、Deploymentの作成、設定ファイルの適用などを行う。
dockerコマンドは、Dockerコンテナを管理するためのコマンドラインツールだ。docker run、docker build、docker psなど、様々なコマンドを使って、コンテナの実行、イメージのビルド、コンテナの状態確認などを行う。
terraformコマンドは、Infrastructure as Code(IaC)を実現するためのツールだ。terraform init、terraform plan、terraform applyなど、様々なコマンドを使って、インフラの構築、変更、破棄などを自動化する。
aws、gcloud、azなどのクラウドプロバイダーが提供するCLIツールは、それぞれのクラウドプラットフォームのサービスをコマンドラインから操作するためのものだ。これらのツールを使うことで、インスタンスの起動、ストレージの管理、ネットワークの設定などをCLIから行うことができる。
grepコマンドは、テキストファイルから特定のパターンに一致する行を検索する。grep "error" logfile.txtというコマンドは、logfile.txtファイルから"error"という文字列を含む行を抽出する。
sedコマンドは、テキストファイルの内容を置換、削除、挿入などを行う。sed 's/old_string/new_string/g' file.txtというコマンドは、file.txtファイル内の全ての"old_string"を"new_string"に置換する。
awkコマンドは、テキストファイルをレコードとフィールドに分割し、特定の条件に基づいて処理を行う。awk '{print $1}' file.txtというコマンドは、file.txtファイルの各行の最初のフィールドを表示する。
これらのコマンドを習得し、組み合わせることで、DevOpsエンジニアは日々の業務をより効率的に、そして正確に進めることができるようになる。