CUIは「文字でコンピューターへ依頼する画面」
CUI(Character User Interface)は、マウスでボタンを押す代わりに文字で命令する操作方法です。CLI(Command Line Interface)とも呼ばれます。サーバーでは、次の3つの利点があります。離れた場所から操作しやすいこと、操作した内容を文字で記録に残せること、同じ手順をもう一度そのまま再現できることです。
例は自分専用の仮想マシン(1台のパソコンの中に作る、もう1台の仮想のパソコン)、WSL(Windowsの中でLinuxを動かす仕組み)、または学習用PCで試します。会社・学校・公開中サーバーでは、承認、バックアップ、影響範囲、戻し方を確認してから操作します。掲載例は教材であり、すべてを本番環境で実行した証跡ではありません。
仮想マシン(VM)やWSLをまだ用意していない場合は、先に環境準備ガイドを行ってください。
1. 端末を開き、種類を見分ける
端末(ターミナル)は、CUIを表示するための窓です。シェルは、打ち込んだ文字を読み取って実行するプログラムです。同じ端末でも、LinuxのBash、WindowsのPowerShell、コマンドプロンプトでは文法が少し違います。
BashLinuxLinux / WSL
Linuxでは端末アプリを開きます。WindowsのWSLを使う場合は、Windows Terminal(Windows標準の端末アプリ)を開き、その中からUbuntu(Linuxの種類の一つ)などを選びます。
student@server01:~$読む:左から順に、ログイン中のユーザー名、接続先の端末名、今いる場所(現在地)が並びます。最後の$は、管理者ではない一般ユーザーとして操作していることを示します。
PowerShellWindowsWindows Terminal
スタートメニューで「ターミナル」または「PowerShell」を検索します。
PS C:\Users\student>読む:PSはPowerShell、続く文字は現在のフォルダーです。
cmd.exeWindowsコマンドプロンプト
Win + Rでcmdと入力して開けます。古い手順や短い確認コマンドで使われます。
C:\Users\student>注意:PowerShellとCMDは見た目が似ていますが、変数(値を入れておく入れ物)やパイプ(前のコマンドの結果を次へ渡す仕組み)の扱いが異なります。片方で動いた書き方が、もう片方ではそのまま動かないことがあります。
2. コマンドを3つに分けて読む
| 環境 | 例 | 分解 | 日本語にすると |
|---|---|---|---|
| Linux | ls -lah /var/log | ls + -lah + /var/log | /var/logを、隠し項目も含め、詳しく読みやすい単位で一覧にする。 |
| PowerShell | Get-Service -Name sshd | Get-Service + -Name + sshd | sshdという名前のサービス情報を取得する。 |
| CMD | ping -n 4 server01 | ping + -n 4 + server01 | server01へ4回、応答確認を送る。 |
覚え方:「何をする・どのように・何に対して」長いコマンドも、空白ごとに役割を区切ると読めます。
3. パスはファイルの住所
絶対パスは、一番上から書いた完全な住所です。相対パスは、今いる場所から見た道順の書き方です。Linuxは/、Windowsは通常\で階層を区切ります。
/var/log/nginxLinuxLinuxのパス
先頭の/は、ルート(すべての入り口になる最上位のフォルダー)を表します。~は自分のホーム(利用者ごとに用意された自分専用のフォルダー)、.は現在地、..は1つ上の階層です。
$ pwd
/home/student
$ cd ..
$ pwd
/homeC:\Logs\app.logWindowsWindowsのパス
C:はドライブ。.は現在地、..は1つ上を表します。
PS> Get-Location
C:\Users\student
PS> Set-Location .."Monthly Report.txt"共通空白を含む名前
シェルは空白を「ここで区切り」という記号として読みます。そのため、名前に空白があると別々の指定と受け取られます。これを防ぐため、パス全体を引用符(ダブルクォート)で囲みます。
less "Monthly Report.txt"
Get-Content ".\Monthly Report.txt"安全策:入力しにくい名前は、Tab補完(途中まで打ってTabキーを押すと、残りを自動で補ってくれる機能)を使います。打ち間違いを防げます。
4. 覚えると入力が楽になるキー操作
| 操作 | 意味 | 使いどころ | 注意 |
|---|---|---|---|
| Tab | 候補を補完 | 長いファイル名やコマンド名を正確に入力。 | 補完後の対象を読んでから実行。 |
| ↑ / ↓ | 履歴を移動 | 直前のコマンドを修正して再利用。 | 変更・削除コマンドを誤って再実行しない。 |
| Ctrl + C | 実行中の処理を中断 | pingやログ監視を止める。 | ファイル更新中の強制中断は破損の原因になり得る。 |
| Ctrl + L | 画面を整理 | BashやPowerShellの表示を見やすくする。 | 履歴やファイルは消えない。 |
| q | 閲覧画面を終了 | less、manなどから戻る。 | 通常のプロンプトでは文字qが入力されるだけ。 |
パスワード入力中は、画面に文字や*が表示されないことがあります。これは故障ではなく、のぞき見を防ぐための動作です。そのまま最後まで打ち、Enterを押します。引用符が閉じていない場合は、次の行が入力待ちのまま止まります。そのときはCtrl + Cで中断し、最初から入力し直します。
5. コマンドを組み合わせる
かんたんに言うとコマンドは1つずつ使うだけでなく、つなげて使えます。|は前の結果を次のコマンドへ渡し、>は結果をファイルへ書き出し、&&は前が成功したときだけ次へ進みます。
|パイプ左の結果を右へ渡す
$ journalctl -u nginx | tail -n 20
PS> Get-Service | Where-Object Status -eq 'Running'読む:|(パイプ)は、左のコマンドの結果を右のコマンドへ渡す記号です。表示が多すぎるとき、必要な情報だけに絞り込めます。PowerShellでは、文字の並びではなくオブジェクト(項目名と値をひとまとめにしたデータ)を渡します。
> / >>ファイル変更結果をファイルへ保存
$ hostname > check.txt
$ date >> check.txt
PS> Get-Date | Out-File check.txt -Append重要:>は既存内容を上書き、>>は末尾へ追加します。
&&条件実行成功したときだけ次へ進む
$ test -f app.conf && echo "found"Linux:左のコマンドが成功したとき、つまり終了コード(コマンドの結果を表す数字)が0のときだけ、右のコマンドを実行します。PowerShell 7でも利用できますが、Windows PowerShell 5.1では使えません。
* / ?複数対象ワイルドカードで候補をまとめる
ワイルドカードは、名前の一部を「何でもよい」として指定する記号です。*は任意の文字の並び、?は任意の1文字に一致します。
$ ls *.log
PS> Get-ChildItem *.log注意:削除や移動と組み合わせる前に、同じ書き方を一覧表示コマンドで試します。意図しないファイルまで一致していないかを、消す前に目で確かめるためです。
6. 「表示された」だけで成功と決めない
かんたんに言うと画面に何か表示されても、それだけでは成功したかどうか分かりません。結果を4つに分けて読むと、成功と失敗を自分で判断できます。
コマンド操作は、入力よりも結果の確認が重要です。次の4つを区別します。標準出力(うまくいったときの通常の表示)、エラー出力(失敗を知らせる表示)、終了コード(成功か失敗かを表す数字)、そして操作したあとの実際の状態です。
$?Linux終了コードを確認
$ grep -n "error" app.log
$ echo $?
0読む:一般に0は成功、0以外は「見つからなかった」やエラーを表します。数字の意味はコマンドごとに違うため、そのコマンドの説明書で確認します。
$LASTEXITCODEPowerShell外部コマンドの終了コード
PS> ping -n 1 server01
PS> $LASTEXITCODE重要:$LASTEXITCODEには、直前に実行した外部コマンド(PowerShell専用ではない、単独のプログラム)の結果だけが残ります。次の外部コマンドを実行すると上書きされるため、その前にすぐ確認するか、別の変数へ保存します。
再確認共通状態を別コマンドで確かめる
$ sudo systemctl restart nginx
$ systemctl is-active nginx
$ curl -I http://localhost考え方:再起動したあと、サービスが動いているか、そして実際に応答が返るかを順番に確かめます。ここまで確認できて初めて、「利用者から見ても復旧した」と言えます。
記録:「いつ・誰が・どこで・何を・結果・次の判断」成功例だけでなく、失敗メッセージと未確認事項も残します。
7. 変更コマンドの前に6点確認
対象
hostname(機器の名前)、whoami(今のユーザー名)、pwd / Get-Location(現在地)を使い、これから操作する場所が正しいかを確認します。
目的
何を直し、どうなれば成功かを1文で説明。
影響
停止、通信断、上書き、権限変更の影響を確認。
退避
設定やデータをバックアップし、復元方法を確認。
戻し方
元に戻すコマンド、いつ戻すと決めるかの判断基準、困ったときの連絡先を、операции前に用意します。
再確認
状態、ログ、利用者から見た動作を確認。
8. 障害対応は変更せず事実を集める
かんたんに言うと障害のときは、すぐ直そうとせず、まず事実を集めます。手前(自分の端末)から奥(サーバーの中)へ順に見ていくと、どこで止まっているかが分かります。
「Webが開かない」とき、いきなり再起動すると原因の手掛かりが消えることがあります。次の順で確認します。対象 → 時刻 → 名前解決(名前をIPアドレスへ変換すること) → 経路(通信が通る道すじ) → ポート(サービスごとの入口の番号) → サービス → ログ。
| 順 | 確認 | Linux例 | Windows例 | 見るところ |
|---|---|---|---|---|
| 1 | 対象・時刻 | hostname; date; whoami | hostnameGet-Datewhoami | 正しい端末とアカウントか。 |
| 2 | IPと経路 | ip addrip route | ipconfig /all | 期待するIP、ゲートウェイか。 |
| 3 | 名前解決 | getent hosts server01 | Resolve-DnsName server01 | 期待するIPへ変換できるか。 |
| 4 | ポート | curl -I http://server01 | Test-NetConnection server01 -Port 80 | サービスの入口へ届くか。 |
| 5 | サービス | systemctl status nginx | Get-Service -Name W3SVC | 起動状態と直近エラー。 |
| 6 | ログ | journalctl -u nginx -n 50 | Get-WinEvent -LogName System -MaxEvents 50 | 発生時刻付近の記録。 |
例をあげます。事実=14:05の時点で名前解決は成功、TCP 443(HTTPS通信で使う入口の番号)は失敗。推測=サービスの停止か、通信許可の設定を要確認。未確認=サーバー側の状態(権限がないため確認できていない)。このように分けて書くと、思い込みでの断定や、勝手な変更を防げます。
9. 15分ずつの段階演習
学習用環境で実施します。「作業前の確認」「操作」「作業後の確認」「自分の言葉で説明」までできれば完了です。
作業場所を説明する
- 端末を開く。
- ユーザー名、端末名、現在地を表示。
- ホームへ移動し、一覧を表示。
- 結果を「誰が・どこで」に言い換える。
コマンド例
Linux:whoami、hostname、pwd、cd、ls -la
PowerShell:whoami、hostname、Get-Location、Set-Location $HOME、Get-ChildItem -Force
作成・コピー・確認
cui-practiceフォルダーを作成。note.txtを作成。note-backup.txtへコピー。- 一覧と内容を確認してから、学習用フォルダーだけを片付ける。
コマンド例
Linux:mkdir cui-practice、cd cui-practice、touch note.txt、コピーはcp note.txt note-backup.txt、片付けはrm -i cui-practice/note.txt・rm -i cui-practice/note-backup.txt
PowerShell:New-Item -ItemType Directory cui-practice、Set-Location cui-practice、New-Item note.txt、コピーはCopy-Item note.txt note-backup.txt、片付けはRemove-Item note.txt -Confirm・Remove-Item note-backup.txt -Confirm
合格条件
各操作前に現在地と対象を確認し、コピー元とコピー先を説明できること。削除前に学習用フォルダー以外が含まれないと確認できること。
Web接続を報告する
example.comの名前解決を確認。- TCP 443またはHTTPS応答を確認。
- 実行時刻、コマンド、結果を保存。
- 事実・推測・未確認を3行で報告。
注意
結果にはIP、端末名、ユーザー名が含まれる場合があります。公開前に機密情報や個人情報を除きます。