2026年10月8日にMicrosoft LearnのWindows Commands本文を再確認した。コマンドラインはOSやアプリへ直接指示し、スクリプトで反復作業を自動化する実行環境である。WindowsではCommand shellとPowerShellの役割・文法・エラーコードが異なるため、コマンドを貼り付ける前に対象シェル、作業ディレクトリ、入力の引用、終了コード、権限、破壊性を確認する。便利な短縮手順をそのまま管理者権限・本番データへ適用しない。
コマンドラインは、文字で指示を渡す操作方法です。まず覚えたいのはコマンドの数ではなく、どこで、何に、どの変更を加えるかです。画面上で同じ作業をする方法もあります。繰り返しや結果の記録が必要な場面で使い分けましょう。
30秒で要点
- ターミナルは入力と表示の窓、シェルは命令を解釈するプログラムです。この記事の例はBashを想定します。
- 現在地を確かめ、対象を一覧し、変更後に読み返す順に進めます。練習には空の専用フォルダーを使います。
- コピー、移動、上書き、削除は効果が違います。失敗したときは続きだけを実行せず、現在地と残ったファイルを調べます。
ターミナルを開く前に環境を分ける
表が収まらない場合は、横にスクロールできます
| 言葉 | 役割 | 間違えやすい点 |
|---|---|---|
| ターミナル | 文字の入力と結果を表示する窓 | 同じ窓でも動くシェルは変えられる |
| シェル | 入力した命令、引用符、変数などを解釈する | Bash、Zsh、PowerShellは同じ文法ではない |
| コマンド | ファイルを読むなどの仕事をする命令 | シェル内蔵の命令と別プログラムがある |
| 作業ディレクトリ | 相対パスの出発点 | 別の場所で同じ命令を使うと対象も変わる |
この練習ではBashとGNU系の基本ツールを使います。macOSの標準ツールやPowerShellではオプションや出力が異なります。PowerShellの画面にBash用の記号をそのまま貼る前に、使っているシェルを確認してください。インストールや管理者権限は本記事の前提にしません。
ファイル管理画面で、既存の仕事と無関係な空フォルダーを一つ作り、その場所でBashを開きます。以下は上から順に実行する教材です。コードには入力を示す記号の $ や実行結果を混ぜていません。空白を含む名前は引用符で囲みます。
現在地を確認してからフォルダーを作る
1. pwd:相対パスの出発点を見る
pwd
表示された絶対パスが、自分で作った練習場所かを確かめます。記事の例と同じユーザー名やドライブ名になる必要はありません。
2. ls:対象の名前を見る
ls
空フォルダーなら何も表示されない場合があります。ls -a は隠しファイルを含め、ls -l は詳細を表示します。名前の一覧だけで内容やバックアップの有無は分かりません。
3. cd:移動後も現在地を読む
cd .
pwd
cd ..
cd -
pwd
. は現在の場所、.. は一つ上、cd - は直前の場所です。最後に練習場所へ戻ったかを確認します。cd ~ はホームへ移る書き方ですが、この練習では実行する必要はありません。移動に失敗したら、後続の変更を止めます。
4. mkdir:作業フォルダーを作る
mkdir new_project
printf 'practice only\n' > new_project/note.txt
ls new_project
mkdir はフォルダー作成です。ここでは中身のあるコピーを後で確認できるよう、練習用メモも作ります。同名の場所が既にあるなら、使い回す前に中身を確かめてください。
5. mkdir -p:途中の階層も用意する
mkdir -p projects/web/css
ls projects/web
-p は必要な親フォルダーも作ります。既存の内容を空にする命令ではありません。
6. touch:空ファイルと更新時刻を区別する
touch index.html
printf '<h1>Hello CLI</h1>\n' > index.html
ls -l index.html
touch は、存在しないファイルを空で作り、存在すれば時刻を更新する命令です。本文を書く役割は次の printf が担います。> は既存内容を置き換えるため、練習用以外のファイルへ向けないでください。
コピー・移動・削除の違いを手元で確かめる
7. cp:元を残して複製する
cp index.html index_backup.html
cp -r new_project new_project_backup
cat new_project_backup/note.txt
ファイル一つのコピーとフォルダーの再帰コピーです。コピー先のメモが読めても、これはバックアップ全体の復元試験にはなりません。保存先の障害や世代管理は別の課題です。既存のコピー先への上書きにも注意します。
8. mv:移動と名前変更
mv index.html new_project/
mv index_backup.html homepage.html
ls new_project
ls homepage.html
最初は場所を変え、次は名前を変えます。以後、元の index.html は new_project/index.html と指定します。
9. rm:練習用の複製だけを消す
pwd
ls homepage.html new_project_backup
rm homepage.html
rm -r new_project_backup
ls
rm は通常、ごみ箱へ送る操作ではありません。-r は中身も対象にする指定です。この例で削除するのは直前に作った複製だけで、new_project 本体は残します。削除前の一覧が想定と違う場合は実行しません。ワイルドカードや強制指定を足してエラーを消す方法は、この練習では使いません。
ファイルの内容と必要な行を読む
10. cat:短いファイルを一度に読む
cat new_project/index.html
Hello CLI を含むHTMLの文字列が表示されます。ブラウザーの描画ではありません。長いファイルでは必要な行が流れてしまうため、次の方法を使い分けます。
11. less:長い内容を区切って見る
printf 'line %s\n' {1..30} > large_file.txt
less large_file.txt
通常の対話画面ではSpaceで進み、b で戻り、/ に続けて検索語を入力し、q で終了します。環境や設定でキー動作が変わることがあります。パイプなどで標準出力が画面でない場合の結果は、実際のキー操作を確認した証拠にはなりません。
12. head・tail:先頭と末尾を限定する
head large_file.txt
tail large_file.txt
head -n 5 large_file.txt
この教材では30行のうち先頭10行、末尾10行、先頭5行を比べます。ログの一部だけを読んで、間にあるエラーまで確認済みにしないことが大切です。
13. grep:内容に合う行を探す
printf 'function demo() {}\n' > app.js
printf 'import React from "react";\n' > view.js
grep 'Hello' new_project/index.html
grep 'function' *.js
grep -r 'import React' .
JavaScriptの2ファイルは検索用の文字列であり、実行するプログラムではありません。grep の通常の検索語は正規表現です。文字をそのまま探すなら grep -F も使えます。再帰検索は練習場所に限定します。
14. find:名前や種類から探す
find . -name '*.js'
find . -type f -mtime -1
名前で探す仕事と、中身の行を探す grep を分けます。'*.js' の引用符はシェルに先に展開させないためです。-mtime -1 は経過時間による条件で、暦の「昨日以降」と同じ意味ではありません。時刻の条件は利用する find の説明で確認してください。
動いている処理と命令のつなぎ方
15. ps:まず自分のシェルを見る
ps -p $$
$$ はこのBashのプロセスIDです。全体を見る ps や、環境によって使える ps aux は調査用途ですが、オプションは実装で異なります。表示されたIDを理由もなく停止対象にしないでください。
16. kill:自分で起動した練習用処理だけを止める
sleep 30 &
lesson_pid=$!
ps -p "$lesson_pid"
kill -TERM "$lesson_pid"
wait "$lesson_pid"
sleep 30 &
lesson_pid=$!
kill -KILL "$lesson_pid"
wait "$lesson_pid"
$! は直前にバックグラウンドで起動した処理のIDです。TERMは終了を求めるシグナル、KILLは処理側の後始末を待てない強制終了です。kill -9 はKILLの番号指定に当たりますが、通常の対処の第一選択にはしません。ここでは違いを学ぶため、データを扱わない自分の sleep だけを対象にしています。停止後の wait が非0になるのは想定内で、成功終了と同じではありません。記事のコードを業務プロセスに置き換えて実行しないでください。
17. history:履歴は内容を読んでから再利用する
history 5
履歴の有無はシェルの設定や対話モードで変わります。上矢印による再表示やTabによる補完は便利ですが、実行前に対象を読み直します。パスワードやトークンを命令へ直接書くと、履歴などに残る場合があります。
18. パイプとリダイレクトを区別する
ls -la | grep '\.js'
ls -la > file_list.txt
echo 'New line' >> notes.txt
| は前の標準出力を次の標準入力へ渡し、> はファイルを作成・上書き、>> は追記します。最初の例は画面用の一覧を絞る練習で、任意のファイル名を安全に処理するプログラムの設計ではありません。エラー表示は標準出力とは別なので、> だけで全エラーを記録できるとも限りません。
19. ; と &&:続ける条件を意識する
mkdir sequence; cd sequence; touch index.html
cd ..
mkdir guarded && cd guarded && touch index.html
cd ..
; は前の命令が失敗しても次へ進みます。&& は前の命令が成功した場合に次へ進むため、移動できたときだけ作る用途に向きます。どちらも複数操作全体を取り消す仕組みではありません。前提が崩れたら現在地を確認してください。
20. ワイルドカード:展開される対象を読む
touch file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt
ls *.js
ls file[1-5].txt
この教材ではJavaScriptの2ファイルと、番号1〜5の5ファイルが対象です。file6.txt は後者に含まれません。該当名がない場合の振る舞いもシェル設定で変わるため、削除命令へそのまま応用しないでください。
失敗した場面から確認方法を選ぶ
表が収まらない場合は、横にスクロールできます
| 観測 | まず見るもの | 避けたい操作 |
|---|---|---|
| ファイルがない | pwd、ls、移動後のパス | 元の場所に別の空ファイルを作って隠す |
| 権限がない | 対象と必要な権限の根拠 | すぐ管理者権限へ切り替える |
| 一部だけ作られた | 実在するファイルと最後の終了状態 | 全体を無条件に再実行する |
| 処理が終わらない | 自分の処理ID、目的、出力 | 不明なIDを強制終了する |
最初の練習の成果は、命令を暗記することではありません。new_project/index.html が残り、複製だけが削除され、作ったファイルの場所を説明できるかを確認しましょう。
GNUのBashマニュアルとCoreutilsマニュアルは仕様を調べる入口です。手元で使う版の help や --help も確認してください。オンライン資料を開けない場合、その本文を確認したことにはなりません。
現在地と相対・絶対パス、コピーと移動の考え方は、Ubuntuの公式入門も参照できます。本記事のBash教材と、各OSの独自オプションは分けて確認してください。