Linuxコマンド完全チートシート

## 目次
1. [基本操作コマンド](#1-基本操作コマンド)
2. [ファイル操作](#2-ファイル操作)
3. [ディレクトリ操作](#3-ディレクトリ操作)
4. [テキスト処理](#4-テキスト処理)
5. [検索コマンド](#5-検索コマンド)
6. [アーカイブと圧縮](#6-アーカイブと圧縮)
7. [ネットワーク関連](#7-ネットワーク関連)
8. [プロセス管理](#8-プロセス管理)
9. [システム情報](#9-システム情報)
10. [パーミッション管理](#10-パーミッション管理)
11. [パッケージ管理](#11-パッケージ管理)
12. [SSH関連](#12-ssh関連)
13. [Git コマンド](#13-git-コマンド)
14. [Docker コマンド](#14-docker-コマンド)
15. [Windows環境でのLinux](#15-windows環境でのlinux)
16. [シェルスクリプト基本](#16-シェルスクリプト基本)
17. [便利なワンライナー](#17-便利なワンライナー)
18. [トラブルシューティング](#18-トラブルシューティング)
19. [パフォーマンス最適化](#19-パフォーマンス最適化)
20. [セキュリティ対策](#20-セキュリティ対策)

## 1. 基本操作コマンド

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `ls` | ディレクトリの内容を表示するための基本コマンド | `ls -la`<br>（全ファイル詳細表示）<br><br>`ls -lh`<br>（サイズを人間が読みやすい単位で表示） | ・プロジェクトファイル確認<br>・設定ファイル一覧表示 |
| `cd` | ディレクトリを移動するコマンド | `cd /path/to/dir`<br>（指定パスに移動）<br><br>`cd ..`<br>（親ディレクトリへ移動） | ・プロジェクト間の移動<br>・設定ディレクトリへの移動 |
| `pwd` | 現在の作業ディレクトリを表示（Print Working Directory） | `pwd`<br>（現在の作業ディレクトリのフルパスを表示） | ・スクリプト内での位置確認<br>・複数ターミナルでの作業位置確認 |
| `touch` | 空ファイルの作成またはタイムスタンプの更新 | `touch file.txt`<br>（ファイルが存在しなければ作成、存在すれば更新日時のみ変更）<br><br>`touch -d "2023-01-01" file.txt`<br>（特定日時にタイムスタンプを設定） | ・プレースホルダーファイル作成<br>・ファイル日時の変更 |
| `mkdir` | 新しいディレクトリを作成 | `mkdir -p path/to/dir`<br>（親ディレクトリが存在しなければ一緒に作成）<br><br>`mkdir test`<br>（testという名前のディレクトリを作成） | ・プロジェクト構造の構築<br>・ログディレクトリの作成 |
| `cp` | ファイル・ディレクトリをコピー | `cp -r source dest`<br>（ディレクトリを再帰的にコピー）<br><br>`cp file.txt backup/`<br>（ファイルをバックアップディレクトリにコピー） | ・設定ファイルのバックアップ<br>・ファイル配布 |
| `mv` | ファイル・ディレクトリの移動または名前変更 | `mv old_name new_name`<br>（ファイル名またはディレクトリ名を変更）<br><br>`mv file.txt /path/to/dir/`<br>（ファイルを別のディレクトリに移動） | ・ファイル整理<br>・バックアップの移動 |
| `rm` | ファイル・ディレクトリを削除<br>**注意**: 元に戻せない | `rm -rf dir`<br>（ディレクトリを再帰的に強制削除）<br><br>`rm file.txt`<br>（ファイルを削除） | ・一時ファイルの削除<br>・古いバックアップの整理 |
| `cat` | ファイルの内容を表示 | `cat file.txt`<br>（ファイルの内容をターミナルに出力）<br><br>`cat file1.txt file2.txt > combined.txt`<br>（複数ファイルを結合） | ・設定ファイルの内容確認<br>・ログの確認 |
| `less` | ファイルを閲覧（スクロール可能） | `less file.txt`<br>（ファイルを閲覧、PageUp/PageDownでスクロール可能）<br><br>`less +100 file.txt`<br>（100行目から表示開始） | ・大きなログファイルの閲覧<br>・長いテキストファイルの確認 |
| `head` | ファイルの先頭部分を表示 | `head -n 10 file.txt`<br>（ファイルの先頭10行を表示）<br><br>`head file.txt`<br>（デフォルトで先頭10行を表示） | ・ログファイルの最新部分確認<br>・CSVヘッダー確認 |
| `tail` | ファイルの末尾部分を表示 | `tail -f log.txt`<br>（ファイルの更新をリアルタイムで監視）<br><br>`tail -n 100 log.txt`<br>（最後の100行を表示） | ・ログのリアルタイム監視<br>・処理進行状況の確認 |
| `man` | コマンドのマニュアルを表示 | `man ls`<br>（lsコマンドのマニュアル表示）<br><br>`man -k search_term`<br>（キーワードでマニュアル検索） | ・コマンドオプションの確認<br>・使い方の詳細学習 |
| `history` | 実行したコマンドの履歴を表示 | `history`<br>（コマンド履歴全てを表示）<br><br>`history | grep git`<br>（gitを含むコマンド履歴のみ表示） | ・過去のコマンド確認<br>・複雑なコマンド再利用 |
| `clear` | 画面をクリア | `clear`<br>（ターミナル画面をクリア）<br><br>`Ctrl+L`<br>（ショートカットでクリア） | ・作業スペースのクリーンアップ<br>・出力の見やすさ向上 |
| `echo` | テキストを出力 | `echo "Hello World"`<br>（テキストをターミナルに出力）<br><br>`echo $PATH`<br>（環境変数を表示） | ・シェルスクリプト内のメッセージ表示<br>・環境変数確認 |

## 2. ファイル操作

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `file` | ファイルタイプを判定 | `file document.pdf`<br>（ファイルのタイプを表示）<br><br>`file *`<br>（カレントディレクトリ内の全ファイルのタイプを表示） | ・拡張子のないファイルの種類特定<br>・ファイルフォーマットの確認 |
| `stat` | ファイルの詳細情報（メタデータ）を表示 | `stat file.txt`<br>（ファイルの詳細情報を表示）<br><br>`stat -c "%a %n" file.txt`<br>（パーミッションと名前のみ表示） | ・ファイル作成・更新日時の確認<br>・パーミッションの詳細確認 |
| `wc` | 行数・単語数・バイト数をカウント | `wc -l file.txt`<br>（ファイルの行数のみをカウント）<br><br>`wc file.txt`<br>（行数、単語数、バイト数を表示） | ・コードの行数カウント<br>・テキスト量の測定 |
| `dd` | 低レベルなファイルコピーや変換<br>**注意**: 誤使用でデータ損失の可能性 | `dd if=/dev/zero of=file.txt count=1 bs=1M`<br>（1MBの0埋めファイルを作成）<br><br>`dd if=/dev/sda of=disk.img bs=4M`<br>（ディスクイメージを作成） | ・ディスクイメージのバックアップ<br>・大容量ファイルの効率的コピー |
| `ln` | ハードリンクまたはシンボリックリンクを作成 | `ln -s target_file link_name`<br>（シンボリックリンクを作成）<br><br>`ln original_file hard_link`<br>（ハードリンクを作成） | ・共有ライブラリへのリンク<br>・設定ファイルの標準位置へのリンク |
| `chown` | ファイル所有者とグループを変更 | `chown user:group file.txt`<br>（ファイルの所有者とグループを変更）<br><br>`chown -R www-data:www-data /var/www/`<br>（ディレクトリ以下を再帰的に変更） | ・アップロードファイルの所有権変更<br>・サービス実行ユーザーへの権限付与 |
| `chmod` | ファイルのアクセス権限を変更 | `chmod 755 script.sh`<br>（実行権限を付与）<br><br>`chmod -R g+w directory/`<br>（ディレクトリ以下にグループ書き込み権限を付与） | ・スクリプトに実行権限を付与<br>・セキュリティ設定の調整 |
| `diff` | ファイル間の差分を比較 | `diff file1.txt file2.txt`<br>（2つのファイルの差分を表示）<br><br>`diff -u file1.txt file2.txt`<br>（Unified形式で差分を表示） | ・設定ファイルの変更確認<br>・コードの変更点確認 |
| `md5sum` | MD5ハッシュ値を計算（ファイル整合性確認） | `md5sum file.txt`<br>（ファイルのMD5ハッシュ値を表示）<br><br>`md5sum -c checksums.md5`<br>（チェックサムファイルで検証） | ・ダウンロードファイルの整合性確認<br>・ファイル変更の検出 |
| `sha256sum` | SHA256ハッシュ値を計算（より安全なハッシュ） | `sha256sum file.txt`<br>（ファイルのSHA256ハッシュ値を表示）<br><br>`sha256sum -c checksums.sha256`<br>（チェックサムファイルで検証） | ・セキュリティ重視のファイル検証<br>・暗号化キーの検証 |
| `truncate` | ファイルサイズを変更（拡大/縮小） | `truncate -s 0 log.txt`<br>（ファイルを0バイトに切り詰めて空にする）<br><br>`truncate -s 1G large_file.dat`<br>（ファイルサイズを1GBに設定） | ・ログファイルのクリア<br>・大容量ファイルの作成 |
| `split` | 大きなファイルを分割 | `split -b 1G large_file.dat chunk_`<br>（1GBごとに分割）<br><br>`split -l 1000 records.csv part_`<br>（1000行ごとに分割） | ・大容量ファイルの転送<br>・バックアップの分割保存 |
| `basename` | パスからファイル名を取得 | `basename /path/to/file.txt`<br>（パスからファイル名「file.txt」を抽出）<br><br>`basename /path/to/file.txt .txt`<br>（拡張子を除いたファイル名「file」を抽出） | ・スクリプト内でのファイル名抽出<br>・出力ファイル名の構築 |
| `dirname` | パスからディレクトリ名を取得 | `dirname /path/to/file.txt`<br>（パスからディレクトリ部分「/path/to」を抽出） | ・スクリプト内での相対パス生成<br>・設定ファイルディレクトリの特定 |

## 3. ディレクトリ操作

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `find` | 条件に一致するファイル・ディレクトリを検索 | `find /path -name "*.txt" -type f`<br>（指定パス内のtxtファイルを検索）<br><br>`find . -mtime +30 -delete`<br>（30日以上前のファイルを削除） | ・古いログファイルの検索<br>・特定拡張子のファイル一括処理 |
| `du` | ディレクトリのディスク使用量を表示 | `du -sh /path`<br>（指定パスの合計サイズを人間が読みやすい形式で表示）<br><br>`du -h --max-depth=1 /path`<br>（1階層のみのサイズを表示） | ・ディスク容量の問題調査<br>・バックアップサイズの見積もり |
| `ncdu` | ディスク使用量を対話的に表示（du の高機能版） | `ncdu /path`<br>（対話的ディスク使用量分析ツールを起動）<br><br>`ncdu -x /`<br>（他のファイルシステムをマウントポイントで除外） | ・ディスク容量問題の詳細分析<br>・大きなディレクトリの調査 |
| `tree` | ディレクトリ構造をツリー形式で表示 | `tree -L 2 /path`<br>（深さ2までのディレクトリ構造を表示）<br><br>`tree -I "node_modules|vendor" .`<br>（特定ディレクトリを除外してツリー表示） | ・プロジェクト構造の把握<br>・ディレクトリ階層の視覚化 |
| `pushd` | ディレクトリをスタックに保存して移動 | `pushd /path/to/dir`<br>（現在のディレクトリをスタックに保存して移動）<br><br>`pushd +2`<br>（スタック内の2番目の位置に移動） | ・複数ディレクトリ間の素早い移動<br>・元の場所に戻る予定のある作業 |
| `popd` | スタックから直前のディレクトリに戻る | `popd`<br>（スタックから最後にpushdした場所に戻る）<br><br>`popd +1`<br>（スタック内の1番目の位置を削除） | ・作業ディレクトリへの素早い復帰<br>・スクリプト内での位置復元 |
| `dirs` | ディレクトリスタックの内容を表示 | `dirs -v`<br>（スタック内容を番号付きで表示）<br><br>`dirs -c`<br>（スタックをクリア） | ・保存されたディレクトリパスの確認<br>・スタック操作前の状態確認 |

## 4. テキスト処理

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `grep` | テキスト内でパターンに一致する行を検索 | `grep -r "pattern" /path`<br>（ディレクトリ内を再帰的に検索）<br><br>`grep -i "ERROR" --include="*.log" -r .`<br>（大文字小文字を区別せずにログファイルからエラーを検索） | ・エラーログの検索<br>・コード内の特定パターン検索 |
| `sed` | テキストストリームの検索・置換・編集 | `sed 's/old/new/g' file.txt`<br>（ファイル内の「old」を「new」に置換）<br><br>`sed -i '5d' file.txt`<br>（ファイルの5行目を削除） | ・設定ファイルの一括編集<br>・テキスト整形の自動化 |
| `awk` | パターン処理言語によるテキスト処理 | `awk '{print $1}' file.txt`<br>（各行の1列目を抽出）<br><br>`awk -F, '{sum+=$3} END {print sum}' data.csv`<br>（CSV 3列目の合計を計算） | ・ログファイルの特定フィールド抽出<br>・CSVデータの集計 |
| `cut` | テキストの特定部分を切り出し | `cut -d, -f1,3 file.csv`<br>（CSVの1列目と3列目を抽出）<br><br>`cut -c1-10 file.txt`<br>（各行の最初の10文字を抽出） | ・CSVからの特定列抽出<br>・固定長データの項目抽出 |
| `tr` | 文字単位での置換や削除 | `tr 'a-z' 'A-Z' < file.txt`<br>（小文字を大文字に変換）<br><br>`tr -d '\r' < windows.txt > unix.txt`<br>（改行コードをWindows形式からUNIX形式に変換） | ・改行コード変換<br>・大文字小文字変換 |
| `sort` | テキストファイルの行をソート | `sort -k2,2n file.txt`<br>（2列目を数値としてソート）<br><br>`sort -t, -k3,3r data.csv`<br>（CSVの3列目を降順でソート） | ・ログエントリのソート<br>・CSVデータの並べ替え |
| `uniq` | 隣接する重複行を削除/カウント | `sort file.txt | uniq -c`<br>（重複行数をカウント）<br><br>`sort file.txt | uniq`<br>（重複行を削除） | ・ログからの一意のIPアドレス抽出<br>・重複エントリの削除 |
| `paste` | 複数ファイルの行を並べて結合 | `paste file1.txt file2.txt`<br>（2ファイルを横に並べて結合）<br><br>`paste -d, file1.txt file2.txt`<br>（カンマ区切りで結合） | ・関連データの結合<br>・マルチカラムレポート作成 |
| `join` | 共通フィールドに基づいてファイルを結合 | `join file1.txt file2.txt`<br>（第1フィールドで結合）<br><br>`join -1 2 -2 3 file1.txt file2.txt`<br>（file1の2列目とfile2の3列目で結合） | ・関連データの結合<br>・複数ログファイルの相関分析 |
| `comm` | ソート済みファイル間の共通・相違する行を比較 | `comm file1.txt file2.txt`<br>（3列で出力: file1のみ、file2のみ、共通部分）<br><br>`comm -23 file1.txt file2.txt`<br>（file1のみにある行を表示） | ・データセット間の差分特定<br>・共通エントリの抽出 |
| `column` | テキストを整形された列に整列 | `column -t file.txt`<br>（スペース区切りのテキストを整形表示）<br><br>`column -t -s, data.csv`<br>（CSVを整形表示） | ・データの整形表示<br>・テーブル形式データの可読性向上 |
| `strings` | バイナリファイルから印字可能な文字列を抽出 | `strings binary_file`<br>（バイナリから印字可能文字を抽出）<br><br>`strings -n 10 binary_file`<br>（10文字以上の文字列のみ表示） | ・バイナリファイルのデバッグ<br>・埋め込みテキストの調査 |

## 5. 検索コマンド

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `find` | ファイルシステム内でファイル検索と操作 | `find . -name "*.log" -mtime +30 -delete`<br>（30日以上前のlogファイルを検索して削除）<br><br>`find /path -size +100M`<br>（100MB以上のファイルを検索） | ・古いファイルのクリーンアップ<br>・大容量ファイルの特定 |
| `locate` | インデックスDBを使用した高速ファイル検索 | `locate filename`<br>（filenameを含むファイルを高速検索）<br><br>`locate -i "*.conf"`<br>（大文字小文字を区別せずconfファイルを検索） | ・設定ファイルの迅速な検索<br>・システム内のファイル位置特定 |
| `which` | コマンドのフルパスを検索 | `which python`<br>（pythonコマンドのパスを表示）<br><br>`which -a python`<br>（すべてのpythonコマンドのパスを表示） | ・コマンドパスの確認<br>・複数バージョンのコマンド位置確認 |
| `whereis` | コマンドのバイナリ・ソース・マニュアル位置を検索 | `whereis gcc`<br>（gccコマンドの関連ファイル位置を表示） | ・コマンドのドキュメント位置確認<br>・パッケージのインストール確認 |
| `rg` (ripgrep) | 高速なテキストパターン検索 | `rg -i "pattern" --type=js`<br>（JavaScriptファイル内でパターンを大文字小文字区別なく検索）<br><br>`rg -l "TODO" --glob "*.py"`<br>（TODOを含むPythonファイル名を表示） | ・大規模コードベースの検索<br>・特定言語ファイルのみの検索 |
| `ag` (silver searcher) | 高速テキスト検索（rg に類似） | `ag "pattern" --js`<br>（JavaScriptファイル内でパターンを検索）<br><br>`ag --count "TODO" --python`<br>（Pythonファイル内のTODO出現回数をカウント） | ・大規模プロジェクト内の検索<br>・コード内の特定パターン検索 |
| `xargs` | 標準入力をコマンドの引数に変換 | `find . -name "*.tmp" | xargs rm`<br>（tmpファイルを検索して削除）<br><br>`cat urls.txt | xargs wget`<br>（ファイル内のURLを一括ダウンロード） | ・検索結果に対する一括処理<br>・ファイルリストからの一括操作 |

## 6. アーカイブと圧縮

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `tar` | 複数ファイルをアーカイブ化・展開 | `tar -czvf archive.tar.gz /path/to/dir`<br>（ディレクトリをgzip圧縮してアーカイブ作成）<br><br>`tar -xzvf archive.tar.gz`<br>（gzip圧縮アーカイブを展開） | ・プロジェクトのバックアップ<br>・ログファイルのアーカイブ |
| `gzip` | gzip形式で単一ファイルを圧縮 | `gzip file.txt`<br>（ファイルをgzip圧縮してfile.txt.gzを作成）<br><br>`gzip -9 file.txt`<br>（最高圧縮率で圧縮） | ・ログファイルの圧縮<br>・転送サイズの削減 |
| `gunzip` | gzip圧縮ファイルを展開 | `gunzip file.txt.gz`<br>（gzip圧縮ファイルを展開） | ・圧縮ログの閲覧<br>・ダウンロードしたgzipファイルの展開 |
| `zip` | ZIP形式でファイル圧縮（Windows互換） | `zip -r archive.zip /path/to/dir`<br>（ディレクトリを再帰的にZIP圧縮）<br><br>`zip -e secure.zip file.txt`<br>（パスワード保護付きで圧縮） | ・クロスプラットフォーム共有<br>・Webからのダウンロード用パッケージ |
| `unzip` | ZIPアーカイブを展開 | `unzip archive.zip -d /path/to/extract`<br>（ZIPファイルを指定ディレクトリに展開）<br><br>`unzip -l archive.zip`<br>（ZIPファイルの内容一覧表示） | ・ダウンロードしたZIPの展開<br>・アップロードされたZIPの処理 |
| `bzip2` | bzip2形式で圧縮（gzipより高圧縮率） | `bzip2 file.txt`<br>（ファイルをbzip2圧縮してfile.txt.bz2を作成） | ・高圧縮率が必要なファイル<br>・長期保存用アーカイブ |
| `bunzip2` | bzip2圧縮ファイルを展開 | `bunzip2 file.txt.bz2`<br>（bzip2圧縮ファイルを展開） | ・bz2形式のファイル展開<br>・アーカイブからのデータ復元 |
| `xz` | xz形式で圧縮（最高圧縮率） | `xz -9 file.txt`<br>（最高圧縮率でxz圧縮）<br><br>`xz -d file.txt.xz`<br>（xz圧縮ファイルを展開） | ・非常に大きなファイルの長期保存<br>・帯域制限がある環境での転送 |
| `7z` | 多形式対応の高圧縮率アーカイバ | `7z a archive.7z /path/to/dir`<br>（7z形式でアーカイブ作成）<br><br>`7z x archive.7z -o/path/to/extract`<br>（アーカイブを指定パスに展開） | ・高圧縮率が必要な場合<br>・パスワード保護が必要な場合 |

### tar よく使うオプション

| オプション | 説明 | 使用例 |
|----------|------|--------|
| `c` | アーカイブを作成 | `tar -cf archive.tar files/`<br>（アーカイブファイルを作成） |
| `x` | アーカイブを展開 | `tar -xf archive.tar`<br>（アーカイブファイルを展開） |
| `t` | アーカイブ内容を表示 | `tar -tf archive.tar`<br>（アーカイブの内容一覧を表示） |
| `f` | ファイル名指定 | `tar -cf archive.tar files/`<br>（操作対象のアーカイブファイル名を指定） |
| `v` | 詳細表示 | `tar -cvf archive.tar files/`<br>（処理されるファイルを表示） |
| `z` | gzip圧縮/展開 | `tar -czf archive.tar.gz files/`<br>（gzipでの圧縮を指定） |
| `j` | bzip2圧縮/展開 | `tar -cjf archive.tar.bz2 files/`<br>（bzip2での圧縮を指定） |
| `J` | xz圧縮/展開 | `tar -cJf archive.tar.xz files/`<br>（xzでの圧縮を指定） |
| `--exclude` | 特定ファイル/ディレクトリを除外 | `tar -czf archive.tar.gz --exclude='*.log' dir/`<br>（logファイルを除外してアーカイブ作成） |

## 7. ネットワーク関連

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `ping` | ホストへの到達性を確認 | `ping -c 4 example.com`<br>（4回だけpingを送信）<br><br>`ping -i 0.2 -c 100 192.168.1.1`<br>（0.2秒間隔で100回pingを送信） | ・サーバーの生存確認<br>・ネットワーク遅延の測定 |
| `traceroute` | パケットの経路を表示 | `traceroute example.com`<br>（宛先までの経路を表示）<br><br>`traceroute -I example.com`<br>（ICMPを使用した経路追跡） | ・ネットワーク問題の切り分け<br>・経路最適化の検証 |
| `mtr` | traceroute + ping の機能を統合 | `mtr example.com`<br>（対話的な経路モニタリングを開始）<br><br>`mtr --report example.com`<br>（レポート形式で結果を出力） | ・ネットワーク不安定性の継続監視<br>・パケットロスの発生場所特定 |
| `dig` | DNS検索と解析 | `dig example.com A`<br>（ドメインのAレコードを検索）<br><br>`dig +trace example.com`<br>（DNSの委任パスをトレース） | ・DNSの問題診断<br>・DNSレコードの確認 |
| `nslookup` | 名前解決の確認 | `nslookup example.com`<br>（ホスト名の名前解決を実行）<br><br>`nslookup -type=mx example.com`<br>（MXレコードの検索） | ・基本的なDNS確認<br>・メールサーバー設定確認 |
| `host` | シンプルなDNS検索 | `host example.com`<br>（ホスト名の名前解決を実行）<br><br>`host -t TXT example.com`<br>（TXTレコードの表示） | ・DNSレコードの簡易確認<br>・SPF/DKIM記録の確認 |
| `whois` | ドメイン登録情報の照会 | `whois example.com`<br>（ドメインの登録情報を表示）<br><br>`whois 8.8.8.8`<br>（IPアドレスの所有者情報を表示） | ・ドメイン所有者の確認<br>・不審なIPアドレスの調査 |
| `curl` | データ転送ツール（HTTP/FTP/SMTP等） | `curl -O https://example.com/file.zip`<br>（ファイルをダウンロード）<br><br>`curl -X POST -d "data" https://api.example.com`<br>（POSTリクエストを送信） | ・API のテスト<br>・ファイルダウンロード |
| `wget` | ファイルダウンロード特化ツール | `wget https://example.com/file.zip`<br>（ファイルをダウンロード）<br><br>`wget -r -np https://example.com/docs/`<br>（ウェブサイトの一部を再帰的にダウンロード） | ・大きなファイルの再開可能ダウンロード<br>・Webサイトのミラーリング |
| `nc` (netcat) | TCP/UDP接続の診断・テスト | `nc -zv example.com 80`<br>（ポート80への接続テスト）<br><br>`nc -l 8080 > received_file.txt`<br>（ポート8080でリッスンしてファイル受信） | ・ポート開通確認<br>・簡易ファイル転送 |
| `ss` | ソケット情報の表示 | `ss -tuln`<br>（リスニング中のTCP/UDPポートを表示）<br><br>`ss -tp`<br>（接続中のTCPソケットとプロセスを表示） | ・開いているポートの確認<br>・ネットワーク接続の詳細確認 |
| `ip` | ネットワークインターフェース管理 | `ip a`<br>（全インターフェースのアドレス情報を表示）<br><br>`ip r`<br>（ルーティングテーブルを表示） | ・ネットワーク設定の確認<br>・ルーティングテーブルの管理 |
| `tcpdump` | ネットワークパケットのキャプチャ | `tcpdump -i eth0 port 80`<br>（eth0インターフェースのポート80トラフィックをキャプチャ）<br><br>`tcpdump -A -i any host example.com`<br>（特定ホストとの通信内容をASCII表示） | ・ネットワーク問題の詳細診断<br>・通信内容の検査 |
| `nmap` | ネットワーク探索・セキュリティ監査 | `nmap -p 1-1000 192.168.1.1`<br>（1-1000番ポートのスキャン）<br><br>`nmap -sV example.com`<br>（サービスバージョン検出スキャン） | ・セキュリティ脆弱性スキャン<br>・ネットワーク資産の把握 |

## 8. プロセス管理

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `ps` | 実行中のプロセス情報を表示 | `ps aux`<br>（すべてのプロセスを詳細表示）<br><br>`ps -ef | grep nginx`<br>（nginxプロセスを検索） | ・実行中のプロセス確認<br>・特定サービスの状態確認 |
| `top` | プロセス活動をリアルタイム監視 | `top`<br>（リアルタイムプロセス監視を開始）<br><br>`top -u username`<br>（特定ユーザーのプロセスのみ表示） | ・リソース使用状況のリアルタイム監視<br>・高負荷プロセスの特定 |
| `htop` | top の高機能インタラクティブ版 | `htop`<br>（対話的プロセスビューアを起動）<br><br>`htop -p 1234,5678`<br>（指定PIDのプロセスのみ表示） | ・システム状態の視覚的監視<br>・プロセス階層関係の把握 |
| `kill` | プロセスにシグナルを送信して終了 | `kill -9 1234`<br>（プロセスを強制終了）<br><br>`kill -15 1234`<br>（プロセスに正常終了シグナルを送信） | ・応答しないプロセスの終了<br>・サービスの再起動準備 |
| `pkill` | 名前でプロセスを終了 | `pkill firefox`<br>（firefoxという名前のプロセスをすべて終了）<br><br>`pkill -u username`<br>（指定ユーザーのプロセスをすべて終了） | ・特定アプリケーションの全インスタンス終了<br>・ユーザープロセスの一括終了 |
| `pgrep` | プロセス名からPIDを検索 | `pgrep nginx`<br>（nginxプロセスのPIDを表示）<br><br>`pgrep -u root ssh`<br>（rootユーザーのsshプロセスを検索） | ・特定プロセスのPID取得<br>・スクリプト内でのプロセス特定 |
| `nice` | 優先度を指定してコマンド実行 | `nice -n 19 command`<br>（最低優先度でコマンドを実行）<br><br>`nice -n -10 command`<br>（高優先度で実行、root権限必要） | ・バックグラウンドジョブの優先度下げ<br>・システム負荷分散 |
| `renice` | 実行中プロセスの優先度を変更 | `renice -n 19 -p 1234`<br>（PID 1234のプロセスの優先度を下げる）<br><br>`renice -n 10 -u username`<br>（特定ユーザーのプロセス優先度を変更） | ・実行中プロセスの優先度調整<br>・重要プロセスのパフォーマンス確保 |
| `jobs` | シェルのバックグラウンドジョブを表示 | `jobs -l`<br>（バックグラウンドジョブをPID付きで表示） | ・バックグラウンド処理の状態確認<br>・中断したジョブの確認 |
| `fg` | バックグラウンドジョブをフォアグラウンドに | `fg %1`<br>（ジョブ番号1をフォアグラウンドに移動） | ・バックグラウンドジョブの監視<br>・中断したジョブの再開 |
| `bg` | 一時停止したジョブをバックグラウンドで実行 | `bg %1`<br>（ジョブ番号1をバックグラウンドで継続実行） | ・誤って前面で開始したジョブの移動<br>・長時間実行ジョブのバックグラウンド化 |
| `nohup` | ログアウト後もプロセスを継続 | `nohup command &`<br>（ログアウト後も継続するプロセスを開始）<br><br>`nohup command > output.log 2>&1 &`<br>（出力をファイルにリダイレクト） | ・長時間実行バッチの実行<br>・リモートサーバーでの長期処理 |
| `watch` | コマンドを定期的に実行して結果表示 | `watch -n 2 'ls -l'`<br>（2秒ごとにls -lを実行して表示） | ・ファイル変更の監視<br>・システム状態の定期確認 |
| `screen` | 仮想端末セッションを管理 | `screen -S session_name`<br>（名前付きのscreenセッションを開始）<br><br>`screen -r session_name`<br>（既存のscreenセッションに再接続） | ・リモートサーバーでの長時間作業<br>・複数ターミナル管理 |
| `tmux` | 高機能な端末多重化 | `tmux new -s session_name`<br>（名前付きtmuxセッションを開始）<br><br>`tmux a -t session_name`<br>（既存のtmuxセッションにアタッチ） | ・複数の作業を同時に表示<br>・開発環境のカスタマイズ |

## 9. システム情報

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `uname` | システム情報の表示 | `uname -a`<br>（すべてのシステム情報を表示）<br><br>`uname -r`<br>（カーネルリリースバージョンのみ表示） | ・OS/カーネルバージョン確認<br>・システム互換性の確認 |
| `hostname` | システムのホスト名を表示・設定 | `hostname`<br>（現在のホスト名を表示）<br><br>`sudo hostname new-name`<br>（一時的にホスト名を変更） | ・現在のサーバー名確認<br>・複数サーバー操作時の識別 |
| `uptime` | システム稼働時間と負荷表示 | `uptime`<br>（稼働時間、ユーザー数、負荷平均を表示）<br><br>`uptime -p`<br>（稼働時間を読みやすい形式で表示） | ・システム安定性の確認<br>・負荷傾向の確認 |
| `free` | メモリ使用状況の表示 | `free -h`<br>（メモリ使用量を人間が読みやすい単位で表示）<br><br>`free -m`<br>（メガバイト単位で表示） | ・メモリリーク調査<br>・アプリケーションのメモリ要件確認 |
| `df` | ディスク空き容量の表示 | `df -h`<br>（ファイルシステムの使用状況を人間が読みやすい単位で表示）<br><br>`df -i`<br>（iノード使用状況を表示） | ・ディスク容量の管理<br>・ファイルシステム使用率の監視 |
| `lsblk` | ブロックデバイス情報の表示 | `lsblk`<br>（ブロックデバイスをツリー形式で表示）<br><br>`lsblk -f`<br>（ファイルシステム情報を含めて表示） | ・ディスクのパーティション構成確認<br>・マウントポイントの確認 |
| `dmesg` | カーネルメッセージバッファの表示 | `dmesg | grep -i error`<br>（エラーメッセージを大文字小文字区別なく抽出）<br><br>`dmesg -T`<br>（タイムスタンプを読みやすい形式で表示） | ・ハードウェアエラーの診断<br>・デバイスドライバーの問題確認 |
| `vmstat` | 仮想メモリ統計情報 | `vmstat 1 10`<br>（1秒間隔で10回統計情報を表示）<br><br>`vmstat -S M`<br>（メガバイト単位で表示） | ・システムのボトルネック特定<br>・メモリ/CPU/IO使用状況の監視 |
| `iostat` | CPU・ディスクI/O統計 | `iostat -x 1 10`<br>（拡張統計を1秒間隔で10回表示）<br><br>`iostat -d -x /dev/sda`<br>（特定ディスクの詳細I/O統計） | ・ディスクI/Oのボトルネック特定<br>・ストレージパフォーマンス問題診断 |
| `journalctl` | systemdのジャーナルログ表示 | `journalctl -xe`<br>（最新のメッセージを詳細表示）<br><br>`journalctl -u nginx.service`<br>（特定サービスのログのみ表示） | ・システムエラーの調査<br>・サービス問題のトラブルシューティング |
| `systemctl` | systemdサービス管理 | `systemctl status nginx`<br>（Nginxサービスの状態を表示）<br><br>`systemctl restart mysql`<br>（MySQLサービスを再起動） | ・サービスの状態確認<br>・サービスの起動/停止/再起動 |

## 10. パーミッション管理

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `chmod` | ファイルのアクセス権限を変更 | `chmod 755 script.sh`<br>`chmod -R g+w directory/` | ・スクリプトに実行権限を付与<br>・共有ディレクトリのアクセス制御 |
| `chown` | ファイルの所有者とグループを変更 | `chown user:group file.txt`<br>`chown -R www-data:www-data /var/www/` | ・デプロイしたファイルの所有権変更<br>・サービス実行ユーザーへの権限付与 |
| `chgrp` | ファイルのグループ所有権を変更 | `chgrp group file.txt`<br>`chgrp -R developers /opt/project/` | ・グループベースのアクセス制御<br>・プロジェクトファイルの共有設定 |
| `umask` | 新規作成ファイルのデフォルト権限設定 | `umask 022`<br>`umask -S` | ・セキュリティポリシーの実装<br>・新規ファイル作成時の権限制御 |
| `getfacl` | ファイルのACL（アクセス制御リスト）を表示 | `getfacl file.txt`<br>`getfacl -R directory/` | ・詳細なアクセス制御の確認<br>・セキュリティ監査 |
| `setfacl` | ファイルにACL設定を適用 | `setfacl -m u:user:rw file.txt`<br>`setfacl -m g:group:r-x directory/` | ・通常のパーミッションでは不十分な場合の詳細制御<br>・特定ユーザーへの例外的権限付与 |

### chmod数値表記

| 数字 | パーミッション | 表記 | 説明 |
|-----|--------------|------|----|
| 0 | なし | `---` | アクセス権なし |
| 1 | 実行のみ | `--x` | ファイル実行、ディレクトリ移動のみ |
| 2 | 書き込みのみ | `-w-` | ファイル編集、ディレクトリ内ファイル作成・削除 |
| 3 | 書き込み+実行 | `-wx` | ファイル編集・実行、ディレクトリ管理 |
| 4 | 読み取りのみ | `r--` | ファイル内容表示、ディレクトリ内容一覧 |
| 5 | 読み取り+実行 | `r-x` | ファイル読取・実行、ディレクトリ閲覧・移動 |
| 6 | 読み取り+書き込み | `rw-` | ファイル読取・編集、ディレクトリ内容確認・編集 |
| 7 | 全権限 | `rwx` | すべての操作が可能 |

**一般的なパーミッション設定**:
- スクリプト: `755` (rwxr-xr-x) - 所有者は全権限、他者は実行と読み取り
- 設定ファイル: `644` (rw-r--r--) - 所有者は読み書き可能、他者は読み取りのみ
- 非公開ファイル: `600` (rw-------) - 所有者のみアクセス可能

## 11. パッケージ管理

### apt (Debian/Ubuntu)

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `apt update` | パッケージリストを最新化 | `sudo apt update`<br>（パッケージリストを更新） | ・システム更新前の準備<br>・最新パッケージ情報の取得 |
| `apt upgrade` | インストール済みパッケージを更新 | `sudo apt upgrade`<br>（インストール済みパッケージを更新）<br><br>`sudo apt full-upgrade`<br>（依存関係の変更も含めた完全アップグレード） | ・定期的なシステムメンテナンス<br>・セキュリティアップデートの適用 |
| `apt install` | パッケージをインストール | `sudo apt install package`<br>（単一パッケージをインストール）<br><br>`sudo apt install package1 package2`<br>（複数パッケージを同時にインストール） | ・開発ツールのインストール<br>・アプリケーション依存関係のインストール |
| `apt remove` | パッケージを削除（設定ファイルは保持） | `sudo apt remove package`<br>（パッケージを削除するが設定ファイルは残す） | ・不要アプリケーションの削除<br>・ディスク容量の確保 |
| `apt purge` | パッケージと設定ファイルを完全に削除 | `sudo apt purge package`<br>（パッケージと設定ファイルを完全に削除） | ・設定を含めた完全クリーンアップ<br>・クリーンインストール準備 |
| `apt search` | パッケージを検索 | `apt search keyword`<br>（キーワードを含むパッケージを検索） | ・必要なパッケージの検索<br>・特定機能を提供するパッケージの特定 |
| `apt show` | パッケージの詳細情報を表示 | `apt show package`<br>（パッケージの詳細情報を表示） | ・依存関係の確認<br>・パッケージのバージョン・機能確認 |
| `apt list` | パッケージリストを表示 | `apt list --installed`<br>（インストール済みパッケージを一覧表示）<br><br>`apt list --upgradable`<br>（アップグレード可能なパッケージを表示） | ・インストール済みソフトウェアの確認<br>・利用可能アップデートの確認 |
| `apt autoremove` | 不要になった依存パッケージを削除 | `sudo apt autoremove`<br>（不要になった依存パッケージを自動削除） | ・システムクリーンアップ<br>・ディスク容量の確保 |

### yum/dnf (RHEL/CentOS/Fedora)

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `yum update` | パッケージ情報の更新とアップデート | `sudo yum update`<br>（すべてのパッケージを更新）<br><br>`sudo yum update -y`<br>（確認なしで全パッケージを更新） | ・システムの定期メンテナンス<br>・セキュリティパッチの適用 |
| `dnf upgrade` | パッケージの更新（dnfはyumの後継） | `sudo dnf upgrade`<br>（すべてのパッケージをアップグレード）<br><br>`sudo dnf upgrade --refresh`<br>（メタデータを更新してからアップグレード） | ・Fedoraシステムの更新<br>・RHEL8以降のシステム更新 |
| `yum install` | パッケージのインストール | `sudo yum install package`<br>（パッケージをインストール）<br><br>`sudo yum install --nogpgcheck package`<br>（GPG署名チェックをスキップしてインストール） | ・サーバーソフトウェアのインストール<br>・開発環境の構築 |
| `dnf install` | dnfによるパッケージインストール | `sudo dnf install package`<br>（パッケージをインストール）<br><br>`sudo dnf install --best package`<br>（最適なバージョンをインストール） | ・最新Linuxディストリビューションでのソフトウェア導入<br>・モジュラーパッケージの管理 |
| `yum remove` | パッケージの削除 | `sudo yum remove package`<br>（パッケージを削除） | ・不要ソフトウェアの削除<br>・バージョン変更のための削除 |
| `yum search` | パッケージの検索 | `yum search keyword`<br>（キーワードを含むパッケージを検索） | ・特定機能のパッケージ検索<br>・パッケージ名の部分一致検索 |
| `dnf list` | パッケージ一覧の表示 | `dnf list installed`<br>（インストール済みパッケージを一覧表示）<br><br>`dnf list updates`<br>（更新可能なパッケージを表示） | ・システム構成の確認<br>・アップデート対象の把握 |

## 12. SSH関連

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `ssh` | リモートホストへのセキュア接続 | `ssh user@host`<br>（基本的なSSH接続）<br><br>`ssh -i ~/.ssh/key.pem user@host`<br>（秘密鍵を指定してSSH接続） | ・リモートサーバー管理<br>・クラウドインスタンスへの接続 |
| `ssh-keygen` | SSH認証鍵の生成 | `ssh-keygen -t ed25519`<br>（より安全なED25519アルゴリズムで鍵生成）<br><br>`ssh-keygen -t rsa -b 4096 -C "comment"`<br>（4096ビットのRSA鍵をコメント付きで生成） | ・サーバーアクセス用の認証鍵作成<br>・Gitリポジトリ認証用の鍵生成 |
| `ssh-copy-id` | リモートホストに公開鍵を登録 | `ssh-copy-id user@host`<br>（デフォルトの公開鍵をリモートホストに登録）<br><br>`ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host`<br>（特定の公開鍵を登録） | ・パスワードなしログイン設定<br>・新規サーバー構築時の初期設定 |
| `scp` | ファイルをSSH経由で安全に転送 | `scp file.txt user@host:/path`<br>（ローカルファイルをリモートホストにコピー）<br><br>`scp -r directory/ user@host:/path`<br>（ディレクトリを再帰的にコピー） | ・設定ファイルのデプロイ<br>・ログファイルの取得 |
| `sftp` | 対話型のSSHファイル転送 | `sftp user@host`<br>（対話式SFTPセッションを開始）<br><br>sftp内コマンド: `get file`（ダウンロード）<br>`put file`（アップロード）<br>`ls`, `cd`（ディレクトリ操作） | ・対話的ファイル操作<br>・複数ファイルの転送管理 |
| `rsync` | 効率的なファイル同期ツール | `rsync -avz /local user@host:/remote`<br>（ローカルからリモートへアーカイブモードで同期）<br><br>`rsync -avz --delete /local/ user@host:/remote/`<br>（リモート側の余分なファイルを削除して完全同期） | ・増分バックアップ<br>・サイトのデプロイ |
| `sshfs` | リモートファイルシステムをマウント | `sshfs user@host:/remote /local`<br>（リモートディレクトリをローカルにマウント）<br><br>`sshfs user@host:/remote /local -o reconnect`<br>（切断時に自動再接続） | ・リモートファイルの直接編集<br>・複数サーバーのファイルシステム統合操作 |

## 13. Git コマンド

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `git init` | 新しいGitリポジトリを作成 | `git init`<br>（現在のディレクトリを新しいGitリポジトリとして初期化）<br><br>`git init --bare`<br>（作業ディレクトリなしのベアリポジトリを作成） | ・新規プロジェクト開始時<br>・既存コードをバージョン管理化 |
| `git clone` | リモートリポジトリをローカルにコピー | `git clone https://github.com/user/repo.git`<br>（HTTPSプロトコルでリポジトリをクローン）<br><br>`git clone --depth 1 URL`<br>（直近の履歴1件のみの浅いクローン） | ・既存プロジェクトの開発参加<br>・オープンソースへの貢献 |
| `git add` | 変更をステージングエリアに追加 | `git add .`<br>（すべての変更をステージング）<br><br>`git add -p`<br>（変更を対話的に選択してステージング） | ・関連変更のグループ化<br>・コミット前の変更確認 |
| `git commit` | ステージングされた変更を記録 | `git commit -m "Message"`<br>（メッセージ付きでコミット）<br><br>`git commit --amend`<br>（直前のコミットを修正） | ・一連の変更の保存<br>・機能追加の記録 |
| `git status` | 作業ディレクトリとステージングの状態表示 | `git status`<br>（詳細な状態表示）<br><br>`git status -s`<br>（短縮形式で状態表示） | ・未コミットの変更確認<br>・ステージング済み変更の確認 |
| `git diff` | ファイル間の差分を表示 | `git diff`<br>（ステージングされていない変更の差分表示）<br><br>`git diff --staged`<br>（ステージング済みの変更の差分表示） | ・コード変更の詳細確認<br>・コミット前のレビュー |
| `git log` | コミット履歴を表示 | `git log --oneline --graph`<br>（グラフィカルに一行表示のコミット履歴）<br><br>`git log -p`<br>（各コミットの差分も含めて表示） | ・プロジェクト進行状況の確認<br>・変更履歴の追跡 |
| `git branch` | ブランチの作成・一覧表示・削除 | `git branch new-branch`<br>（新しいブランチを作成）<br><br>`git branch -d branch-name`<br>（ブランチを削除） | ・新機能開発の分離<br>・バグ修正の分離 |
| `git checkout` | ブランチの切替・ファイルの復元 | `git checkout branch-name`<br>（指定ブランチに切り替え）<br><br>`git checkout -b new-branch`<br>（新ブランチを作成して切り替え） | ・ブランチ間の移動<br>・誤った変更の取り消し |
| `git merge` | 異なるブランチの変更を統合 | `git merge branch-name`<br>（指定ブランチを現在のブランチにマージ）<br><br>`git merge --no-ff branch-name`<br>（Fast-forwardせずに常にマージコミットを作成） | ・完成した機能の統合<br>・バグ修正の本番適用 |
| `git pull` | リモートの変更を取得してマージ | `git pull origin main`<br>（originリポジトリのmainブランチから変更を取得・マージ）<br><br>`git pull --rebase origin main`<br>（マージではなくリベースで変更を取り込む） | ・チームメンバーの変更の取得<br>・作業開始前の最新化 |
| `git push` | ローカルの変更をリモートに送信 | `git push origin main`<br>（ローカルの変更をoriginリポジトリのmainブランチに送信）<br><br>`git push -u origin new-branch`<br>（新しいブランチをリモートに作成してプッシュ） | ・完了した作業の共有<br>・コードレビュー依頼 |
| `git fetch` | リモートの情報を取得（マージなし） | `git fetch origin`<br>（originリポジトリからすべてのブランチの情報を取得）<br><br>`git fetch --all`<br>（すべてのリモートから情報取得） | ・リモート変更の確認<br>・マージ前の変更内容確認 |
| `git stash` | 作業中の変更を一時保存 | `git stash save "WIP"`<br>（「WIP」という説明付きで変更を退避）<br><br>`git stash pop`<br>（退避した変更を復元して退避スタックから削除） | ・緊急タスク対応時の作業退避<br>・ブランチ変更前の未完了作業保存 |
| `git reset` | HEADの位置を変更 | `git reset --hard HEAD^`<br>（直前のコミットを完全に取り消し）<br><br>`git reset --soft HEAD~3`<br>（3つ前のコミットまで戻し、変更はステージング状態に保持） | ・誤ったコミットの取り消し<br>・コミット履歴の整理 |
| `git rebase` | コミット履歴を再構成 | `git rebase -i HEAD~3`<br>（直近3つのコミットを対話的に編集）<br><br>`git rebase main`<br>（mainブランチの最新に現在のブランチを乗せ替え） | ・コミット履歴の整理<br>・取り込み済みブランチの更新 |

## 14. Docker コマンド

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `docker ps` | 実行中コンテナの一覧表示 | `docker ps -a`<br>（停止中も含めたすべてのコンテナを表示）<br><br>`docker ps -q`<br>（コンテナIDのみを表示） | ・実行中のサービス確認<br>・コンテナ状態の監視 |
| `docker images` | ローカルのイメージ一覧表示 | `docker images`<br>（ローカルに保存されたイメージを一覧表示）<br><br>`docker images --format "{{.Repository}}:{{.Tag}}"`<br>（名前とタグのみをフォーマット指定で表示） | ・利用可能なイメージの確認<br>・古いイメージの特定 |
| `docker run` | イメージからコンテナを作成・起動 | `docker run -d -p 80:80 nginx`<br>（nginxイメージをバックグラウンドで実行し、ポート80をマッピング）<br><br>`docker run -it --rm ubuntu bash`<br>（ubuntuで対話的シェルを起動し、終了時にコンテナ削除） | ・アプリケーションのデプロイ<br>・開発環境の起動 |
| `docker build` | Dockerfileからイメージを構築 | `docker build -t myapp:1.0 .`<br>（カレントディレクトリのDockerfileからmyapp:1.0というタグ付きイメージを構築）<br><br>`docker build --no-cache -t myapp .`<br>（キャッシュを使わずに新規ビルド） | ・アプリケーションのパッケージング<br>・CI/CDパイプラインでのビルド |
| `docker exec` | 実行中コンテナでコマンドを実行 | `docker exec -it container_id bash`<br>（実行中コンテナで対話的バッシュシェルを起動）<br><br>`docker exec container_id ls /app`<br>（コンテナ内の/appディレクトリの内容を表示） | ・コンテナ内のトラブルシューティング<br>・設定確認 |
| `docker logs` | コンテナのログを表示 | `docker logs -f container_id`<br>（コンテナのログをリアルタイムで追跡）<br><br>`docker logs --tail 100 container_id`<br>（最新の100行のログのみ表示） | ・アプリケーションのデバッグ<br>・エラー調査 |
| `docker stop` | コンテナを停止 | `docker stop container_id`<br>（コンテナを正常に停止）<br><br>`docker stop $(docker ps -q)`<br>（すべての実行中コンテナを停止） | ・アプリケーションの正常終了<br>・リソース解放 |
| `docker rm` | コンテナを削除 | `docker rm container_id`<br>（停止したコンテナを削除）<br><br>`docker rm -f container_id`<br>（実行中のコンテナを強制削除） | ・クリーンアップ<br>・不要コンテナの整理 |
| `docker rmi` | イメージを削除 | `docker rmi image_id`<br>（指定したイメージを削除）<br><br>`docker rmi $(docker images -q -f "dangling=true")`<br>（タグ付けされていない不要イメージを削除） | ・ディスク容量の確保<br>・古いバージョンの削除 |
| `docker-compose up` | 複数コンテナのサービスを起動 | `docker-compose up -d`<br>（docker-compose.ymlで定義されたサービスをバックグラウンドで起動）<br><br>`docker-compose up --build`<br>（サービス起動前にイメージを再ビルド） | ・開発環境の一括起動<br>・マイクロサービスの構築 |
| `docker-compose down` | 複数コンテナのサービスを停止・削除 | `docker-compose down`<br>（サービス、コンテナ、ネットワークを停止・削除）<br><br>`docker-compose down -v`<br>（ボリュームも含めて削除） | ・環境の完全クリーンアップ<br>・リソースの解放 |
| `docker network` | Dockerネットワークの管理 | `docker network ls`<br>（作成されたネットワーク一覧を表示）<br><br>`docker network create mynetwork`<br>（新しいネットワークを作成） | ・サービス分離<br>・コンテナ間通信の設定 |
| `docker volume` | Dockerボリュームの管理 | `docker volume ls`<br>（作成されたボリューム一覧を表示）<br><br>`docker volume create myvolume`<br>（新しいボリュームを作成） | ・データベースの永続化<br>・設定ファイルの共有 |

## 15. Windows環境でのLinux

### WSL関連コマンド (Windows)

| コマンド | 説明 | 使用例 | 実際の使用シーン |
|---------|------|--------|----------------|
| `wsl` | WSLセッションを開始 | `wsl`<br>（デフォルトのLinuxディストリビューションを起動）<br><br>`wsl -d Ubuntu-20.04`<br>（特定のディストリビューションを起動） | ・Linuxコマンド実行<br>・シェルスクリプト開発 |
| `wsl --list` | インストール済みディストリビューション一覧 | `wsl --list --verbose`<br>（詳細情報付きでディストリビューション一覧を表示）<br><br>`wsl -l -o`<br>（インストール可能なディストリビューション一覧を表示） | ・インストール済み環境の確認<br>・WSL1/WSL2の確認 |
| `wsl --install` | WSLとLinuxディストリビューションをインストール | `wsl --install -d Ubuntu`<br>（WSLとUbuntuディストリビューションをインストール）<br><br>`wsl --install`<br>（デフォルトのUbuntuをインストール） | ・初回WSLセットアップ<br>・追加ディストリビューションの導入 |
| `wsl --terminate` | WSLインスタンスを終了 | `wsl --terminate Ubuntu`<br>（実行中のUbuntuインスタンスを終了）<br><br>`wsl -t Ubuntu`<br>（短縮形の終了コマンド） | ・メモリ解放<br>・問題発生時のリセット |
| `wsl --export` | ディストリビューションをエクスポート | `wsl --export Ubuntu C:\backup.tar`<br>（Ubuntuディストリビューションをtarファイルにエクスポート） | ・開発環境のバックアップ<br>・環境の複製準備 |
| `wsl --import` | エクスポートしたディストリビューションをインポート | `wsl --import Ubuntu2 C:\Ubuntu C:\backup.tar`<br>（バックアップから新しいインスタンスを作成） | ・環境の複製<br>・バックアップからの復元 |
| `wsl --shutdown` | すべてのWSLインスタンスを停止 | `wsl --shutdown`<br>（すべてのWSLディストリビューションを停止） | ・システムリソース解放<br>・Windows再起動前の準備 |
| `wsl --set-version` | ディストリビューションのWSLバージョン変更 | `wsl --set-version Ubuntu 2`<br>（UbuntuをWSL2に変更） | ・パフォーマンス最適化<br>・機能互換性対応 |

### Windows⇔WSL間ファイル操作

| 操作 | 説明 | パス | 実際の使用シーン |
|-----|------|------|----------------|
| WSLからWindows | Windowsファイルへのアクセス | `/mnt/c/Users/YourName/`<br>（Windowsのユーザーフォルダにアクセス）<br><br>`/mnt/d/projects/`<br>（Dドライブのプロジェクトフォルダにアクセス） | ・Windows上のプロジェクト操作<br>・ファイル共有 |
| WindowsからWSL | WSLファイルへのアクセス | `\\wsl$\Ubuntu\home\username\`<br>（エクスプローラからUbuntuのホームディレクトリにアクセス） | ・WindowsエディタでWSLファイル編集<br>・ファイルコピー |
| VSCodeリモート開発 | WSL内のコードをVSCodeで編集 | VS CodeのRemote-WSL拡張機能で接続<br><br>WSL内から: `code .`<br>（現在のディレクトリをVS Codeで開く） | ・WSL内プロジェクトの統合開発<br>・クロスプラットフォーム開発 |

## 16. シェルスクリプト基本

### スクリプト作成と実行

```bash
#!/bin/bash
# コメント
echo "Hello, World!"
```

**実行方法**:
```bash
chmod +x script.sh  # 実行権限付与
./script.sh         # 実行
```

**実際の使用シーン**: デプロイメント自動化、バックアップスクリプト、システム監視、開発環境セットアップ

### 変数

```bash
# 変数定義（=の前後にスペースは不可）
NAME="John"

# 変数使用
echo "Hello, $NAME"
echo "Hello, ${NAME}"  # 変数名が曖昧な場合に中括弧で明示

# コマンド結果を変数に格納
CURRENT_DIR=$(pwd)  # 推奨方法（コマンド置換）
FILES=`ls`  # 古い方法（バッククォート）
```

**実際の使用シーン**: 設定値の管理、繰り返し使用する値の保存、コマンド結果の処理

### 条件分岐

```bash
# 基本的な条件分岐
if [ "$1" = "test" ]; then
    echo "Test mode"
elif [ "$1" = "prod" ]; then
    echo "Production mode"
else
    echo "Unknown mode"
fi

# 数値比較 (-eq, -ne, -lt, -le, -gt, -ge)
if [ "$NUM" -eq 10 ]; then
    echo "Number is 10"
fi

# ファイル確認
if [ -f "$FILE" ]; then  # ファイルが存在する
    echo "File exists"
fi

if [ -d "$DIR" ]; then  # ディレクトリが存在する
    echo "Directory exists"
fi

# AND/OR条件
if [ "$A" = "yes" ] && [ "$B" = "yes" ]; then
    echo "Both are yes"
fi

if [ "$A" = "yes" ] || [ "$B" = "yes" ]; then
    echo "At least one is yes"
fi
```

**実際の使用シーン**: エラーハンドリング、引数による処理の分岐、環境チェック

### ループ

```bash
# for文（リスト）
for i in 1 2 3 4 5; do
    echo "Number: $i"
done

# 範囲指定
for i in {1..10}; do
    echo "Number: $i"
done

# Cスタイルループ
for ((i=1; i<=5; i++)); do
    echo "Count: $i"
done

# while文
COUNT=1
while [ $COUNT -le 5 ]; do
    echo "Count: $COUNT"
    ((COUNT++))  # 数値インクリメント
done

# ファイル内容の読み取り
while read line; do
    echo "Line: $line"
done < input.txt
```

**実際の使用シーン**: ファイル一括処理、反復タスク、データ処理

### 関数

```bash
# 関数定義
function say_hello() {
    echo "Hello, $1!"  # 第1引数を参照
    return 0  # 戻り値（0は成功）
}

# 関数呼び出し
say_hello "World"

# 戻り値取得
say_hello "Test"
RESULT=$?  # 直前のコマンド（関数）の戻りコード
echo "Return code: $RESULT"

# 関数出力を変数に格納
OUTPUT=$(say_hello "Capture")
echo "Function output: $OUTPUT"
```

**実際の使用シーン**: 共通処理のモジュール化、コードの再利用、複雑な処理のカプセル化

### 特殊変数

| 変数 | 説明 | 使用例 |
|-----|------|--------|
| `$0` | スクリプト名 | `echo "Script name: $0"` |
| `$1` - `$9` | 引数1-9 | `echo "First argument: $1"` |
| `$#` | 引数の数 | `echo "Number of args: $#"` |
| `$@` | すべての引数（クォートで囲むと個別に処理） | `for arg in "$@"; do echo $arg; done` |
| `$*` | すべての引数（一つの文字列として） | `echo "All args: $*"` |
| `$?` | 直前のコマンドの終了ステータス | `if [ $? -ne 0 ]; then echo "Error"; fi` |
| `$` | 現在のシェルのプロセスID | `echo "PID: $"` |
| `$!` | 最後にバックグラウンドで実行したコマンドのプロセスID | `echo "Background PID: $!"` |

**実際の使用シーン**: スクリプトの柔軟な引数処理、エラーハンドリング、プロセス管理

## 17. 便利なワンライナー

### テキスト処理

| ワンライナー | 説明 | 実際の使用シーン |
|------------|------|----------------|
| `cat data.csv \| cut -d, -f2` | CSVの2列目を抽出 | ・データ分析の前処理<br>・特定フィールドの確認 |
| `grep "ERROR" log.txt \| wc -l` | エラーメッセージの出現回数をカウント | ・障害調査<br>・システムの健全性確認 |
| `sort file.txt \| uniq -c \| sort -nr` | テキスト行の出現頻度を降順表示 | ・アクセス頻度分析<br>・パターン分析 |
| `find . -name "*.java" -exec grep -l "TODO" {} \;` | TODOコメントを含むJavaファイルを検索 | ・コード品質チェック<br>・残作業の特定 |
| `sed '/^$/d' file.txt` | ファイル内の空行を削除 | ・データクリーニング<br>・テキスト前処理 |
| `awk '{sum+=$2} END {print sum}' file.txt` | 2列目の数値を合計 | ・数値データの集計<br>・ログファイルの統計 |

### ファイル操作

| ワンライナー | 説明 | 実際の使用シーン |
|------------|------|----------------|
| `find . -type f -printf '%T@ %p\n' \| sort -n \| tail -10 \| cut -f2- -d" "` | 最近変更された10ファイルを表示 | ・最近の変更追跡<br>・監査作業 |
| `find . -type f -exec du -h {} \; \| sort -rh \| head -5` | サイズが最大の5ファイルを表示 | ・ディスク容量管理<br>・大きなファイルの特定 |
| `find / -type f -size +100M` | 100MB以上の大きなファイルを検索 | ・ディスク容量の確保<br>・大きなログファイルの特定 |
| `find /path -type f -mtime +30 -delete` | 30日以上前のファイルを削除 | ・自動クリーンアップ<br>・古いログの削除 |

### システム管理

| ワンライナー | 説明 | 実際の使用シーン |
|------------|------|----------------|
| `ps aux --sort=-%mem \| head -6` | メモリ使用量上位5プロセスを表示 | ・メモリリーク調査<br>・リソース使用監視 |
| `ps aux --sort=-%cpu \| head -6` | CPU使用率上位5プロセスを表示 | ・高負荷プロセスの特定<br>・パフォーマンス問題診断 |
| `du -h /var \| sort -rh \| head -10` | /var内の大きなディレクトリを表示 | ・ディスク容量問題の特定<br>・クリーンアップ候補の特定 |
| `grep "Failed password" /var/log/auth.log \| wc -l` | 失敗したログイン試行回数をカウント | ・セキュリティ監視<br>・不正アクセス調査 |

### ネットワーク関連

| ワンライナー | 説明 | 実際の使用シーン |
|------------|------|----------------|
| `netstat -tuln \| grep LISTEN` | リスニング中のポートを表示 | ・サービス稼働確認<br>・セキュリティ監査 |
| `lsof -i :80` | ポート80を使用しているプロセスを特定 | ・サービス診断<br>・ポート競合解決 |
| `curl -I https://example.com` | HTTPヘッダーを表示 | ・Webサーバー設定確認<br>・リダイレクト確認 |
| `tcpdump -i eth0 'port 80'` | ポート80のトラフィックをキャプチャ | ・ネットワークデバッグ<br>・プロトコル分析 |

## 18. トラブルシューティング

### システム問題診断コマンド

| 問題 | 診断コマンド | 対処方法 |
|-----|------------|---------|
| **高CPU使用率** | `top`（リアルタイムCPU監視）<br>`ps aux --sort=-%cpu \| head -10` | ・問題プロセスの特定と再起動<br>・負荷分散の実施<br>・アプリケーションの最適化 |
| **メモリ不足** | `free -h`（メモリ使用状況確認）<br>`vmstat 1 10`（メモリ・スワップ監視） | ・不要プロセスの終了<br>・スワップ設定調整<br>・メモリリークしているアプリの特定 |
| **ディスク容量不足** | `df -h`（ファイルシステム使用率）<br>`du -h --max-depth=1 /path`（ディレクトリサイズ） | ・大きなファイルの特定と削除<br>・ログローテーション設定<br>・不要データのアーカイブ |
| **ネットワーク接続問題** | `ping host`（基本的な到達性確認）<br>`traceroute host`（経路確認）<br>`netstat -tuln`（リスニングポート） | ・ファイアウォール設定確認<br>・ネットワーク設定確認<br>・DNSキャッシュのクリア |
| **サービス起動失敗** | `systemctl status service`（サービス状態確認）<br>`journalctl -xe`（systemdログ確認） | ・設定ファイルの修正<br>・必要なリソースへのアクセス権確認<br>・依存サービスの起動確認 |

### ログ確認コマンド

| ログタイプ | 確認コマンド | 一般的なチェックポイント |
|----------|------------|-------------------|
| **システムログ** | `dmesg`（カーネルメッセージ）<br>`journalctl -b`（現在ブートのログ） | ・ハードウェアエラー<br>・ドライバー問題<br>・起動時エラー |
| **アプリケーションログ** | `tail -f /var/log/application.log`<br>`grep ERROR /var/log/application.log` | ・例外スタックトレース<br>・エラーメッセージ<br>・警告メッセージ |
| **Webサーバーログ** | `tail -f /var/log/nginx/access.log`<br>`grep 500 /var/log/nginx/error.log` | ・HTTPステータスコード<br>・処理時間<br>・エラーレスポンス |
| **セキュリティログ** | `grep "Failed password" /var/log/auth.log`<br>`last`（ログイン履歴） | ・不正アクセス試行<br>・認証失敗<br>・異常なログイン時間 |

## 19. パフォーマンス最適化

### システム監視コマンド

| コマンド | 説明 | 最適化アクション |
|---------|------|----------------|
| `top` / `htop` | リアルタイムシステム監視 | ・CPU/メモリ使用率の高いプロセスの特定<br>・異常なリソース消費の検出 |
| `vmstat 1` | CPU、メモリ、I/O、スワップの秒間統計 | ・メモリ不足とスワップ使用状況特定<br>・I/Oボトルネック検出 |
| `iostat -xz 1` | ディスクI/O詳細統計 | ・ディスクI/O飽和状態の特定<br>・ストレージパフォーマンス問題の特定 |
| `sar -n DEV 1` | ネットワークインターフェース統計 | ・ネットワーク飽和状態の検出<br>・帯域幅使用率の高いアプリケーションの特定 |

### データベース最適化

| コマンド/ツール | 説明 | 最適化アクション |
|---------------|------|----------------|
| `mysqltuner` | MySQL設定分析 | ・メモリ割り当ての最適化<br>・クエリキャッシュの調整 |
| `EXPLAIN SELECT ...` | SQLクエリ実行計画分析 | ・インデックス使用の検証<br>・非効率クエリの特定 |
| `redis-cli --stat` | Redis統計監視 | ・メモリ使用率の監視<br>・コマンド処理速度の確認 |

## 20. セキュリティ対策

### セキュリティスキャンと監視

| コマンド/ツール | 説明 | セキュリティ対策 |
|---------------|------|----------------|
| `nmap -sV -p 1-65535 host` | ポートスキャン・サービス検出 | ・不要なサービスの停止<br>・公開ポート最小化 |
| `lynis audit system` | システムセキュリティ監査 | ・セキュリティ設定の強化<br>・潜在的脆弱性の修正 |
| `fail2ban-client status sshd` | 自動ブロック状態確認 | ・攻撃者IPの特定<br>・保護機能の有効性評価 |

### ファイル整合性監視

| コマンド/ツール | 説明 | セキュリティ対策 |
|---------------|------|----------------|
| `tripwire --check` | ファイル整合性監視 | ・不正なファイル変更の検出<br>・セキュリティインシデントの調査 |
| `find / -type f -name "*.php" -exec md5sum {} \; > checksums.txt` | 手動ファイルチェックサム | ・webshellなど不正スクリプト検出<br>・ファイル変更履歴の作成 |