Linuxはサーバーインフラの根幹を支えるOSだ。W3Techsの2026年3月時点の調査によれば、Webサーバー市場におけるLinux系OSのシェアは約82%に達し、AWS・GCP・Azureのクラウドインスタンスの90%以上がLinux上で稼働している。さらにMicrosoftのWSL(Windows Subsystem for Linux)のアクティブユーザーは2025年時点で推定4,000万人を超え、Windows開発者にとってもLinuxコマンドは日常ツールとなった。Stack Overflow Developer Survey 2025では回答者の約55%がLinuxを開発環境として使用しており、macOSユーザーもターミナルでLinux互換コマンドを日常的に叩いている。本記事では、エンジニアが実務で使うLinuxコマンドを「毎日使う基本コマンド」と「たまに使うが重要なコマンド」の2段階で整理し、使用例つきで30選を解説する。
Linuxコマンドを学ぶべき理由──2026年の市場データ
Linuxコマンドの習熟度は、エンジニアの生産性に直結する。クラウド、コンテナ、CI/CD、サーバー管理のすべてがLinux上で動作しているためだ。
| 指標 | 数値 | 出典 |
|---|
| Webサーバー市場のLinuxシェア | 約82% | W3Techs 2026年3月 |
| クラウドインスタンスのLinux比率 | 90%以上 | 各クラウドベンダー公表値 |
| Docker Hubの公式イメージ(Linux系) | 95%以上 | Docker Hub統計 |
| WSLアクティブユーザー | 約4,000万人 | Microsoft公式ブログ |
| GitHubリポジトリのCI環境(Ubuntu) | 約78% | GitHub Actions統計 |
| 日本のインフラエンジニア求人でLinux必須 | 約85% | 主要求人サイト集計 |
コンテナ技術の普及により、フロントエンドエンジニアやデータサイエンティストもDockerfile内でLinuxコマンドを書く機会が増えている。Linuxコマンドはすべてのエンジニアの共通言語だ。
毎日使う基本コマンド15選
ファイル操作とディレクトリ移動が中心で、これらを自然に使えるかどうかが作業速度の土台になる。
| # | コマンド | 用途 | 使用例 | 主要オプション |
|---|
| 1 | ls | ディレクトリの内容を一覧表示 | ls -la /var/log | -l(詳細表示)、-a(隠しファイル含む)、-h(サイズを人間可読形式に) |
| 2 | cd | ディレクトリを移動 | cd /home/user/projects | cd ~(ホーム)、cd -(直前のディレクトリ)、cd ..(親へ移動) |
| 3 | pwd | 現在のディレクトリパスを表示 | pwd | -P(シンボリックリンクを解決した実パス) |
| 4 | cat | ファイルの内容を表示 | cat /etc/hosts | -n(行番号付き)、-b(空行以外に行番号) |
| 5 | mkdir | ディレクトリを作成 | mkdir -p src/components/ui | -p(中間ディレクトリも一括作成) |
| 6 | rm | ファイルやディレクトリを削除 | rm -rf node_modules | -r(再帰的に削除)、-f(確認なし)、-i(対話的に確認) |
| 7 | cp | ファイルやディレクトリをコピー | cp -r src/ backup/ | -r(再帰的コピー)、-p(属性を保持)、-i(上書き確認) |
| 8 | mv | ファイルの移動・リネーム | mv old.txt new.txt | -i(上書き確認)、-n(上書きしない) |
| 9 | touch | 空ファイルを作成 / タイムスタンプ更新 | touch index.html | -t(指定日時でタイムスタンプ設定) |
| 10 | echo | 文字列を出力 / 変数の値を確認 | echo $PATH | -n(末尾の改行を出力しない)、-e(エスケープシーケンス解釈) |
| 11 | clear | ターミナル画面をクリア | clear | Ctrl+L でも同様の効果 |
| 12 | history | コマンド履歴を表示 | history 20 | 数字で直近N件を表示。!番号 で再実行 |
| 13 | man | コマンドのマニュアルを表示 | man grep | セクション番号指定: man 5 passwd |
| 14 | which | コマンドの実行パスを表示 | which python3 | -a(全パスを表示) |
| 15 | alias | コマンドの別名を定義 | alias ll='ls -la' | unalias で解除。永続化は .bashrc に記述 |
rm -rf の事故を防ぐ
rm -rf は最も事故が多いコマンドだ。防御策を習慣にすべきだ。
| リスク | 対策 |
|---|
| rm -rf / による全削除 | 最近のディストリビューションではデフォルトで保護されている |
| 変数未定義で / を削除 | set -u をスクリプト冒頭に記述(未定義変数をエラーにする) |
| 意図しないワイルドカード展開 | 削除前に ls で対象を確認。rm -i で対話的に確認 |
| 重要ファイルの誤削除 | trash-cli を導入し rm の代わりにゴミ箱移動を使う |
ファイル閲覧・編集コマンド
大きなログファイルを cat で開くとターミナルが埋め尽くされる。目的に応じて閲覧コマンドを使い分けることが実務では重要だ。
| コマンド | 用途 | 使用例 | 特徴 |
|---|
| less | ファイルをページ単位で閲覧 | less /var/log/syslog | ファイル全体をメモリに読まない。巨大ファイル向き。/で検索 |
| head | ファイルの先頭を表示 | head -n 20 access.log | -n で行数指定。デフォルトは10行 |
| tail | ファイルの末尾を表示 | tail -f /var/log/nginx/error.log | -f でリアルタイム監視(ログ追跡の定番) |
| nano | 初心者向きテキストエディタ | nano config.yaml | 操作ガイドが画面下部に表示される。直感的 |
| vim | 高機能テキストエディタ | vim /etc/nginx/nginx.conf | モーダルエディタ。i で挿入、:wq で保存終了、:q! で破棄終了 |
| wc | 行数・単語数・バイト数を数える | wc -l *.py | -l(行数)、-w(単語数)、-c(バイト数) |
検索コマンド──find・grep・locate
| コマンド | 用途 | 使用例 | 主要オプション |
|---|
| find | 条件を指定してファイルを検索 | find /var -name "*.log" -mtime -7 | -name(名前)、-type(種類)、-mtime(更新日数)、-exec(結果に対してコマンド実行) |
| grep | テキストパターンを検索 | grep -rn "ERROR" /var/log/ | -r(再帰検索)、-n(行番号表示)、-i(大文字小文字を無視)、-l(ファイル名のみ表示) |
| locate | ファイル名のデータベースから高速検索 | locate nginx.conf | updatedb でDB更新。findより圧倒的に高速だが最新状態でない可能性あり |
| ripgrep (rg) | grepの高速代替 | rg "TODO" --type py | .gitignore を自動尊重。grepの5-10倍高速 |
grepの実践パターン
| パターン | 使用例 | 説明 |
|---|
| 特定プロセスの検索 | ps aux | grep nginx | 稼働中のnginxプロセスを一覧 |
| ログからエラー行を抽出 | grep -c "ERROR" app.log | エラーの出現回数を集計 |
| 複数キーワードのOR検索 | grep -E "ERROR|WARN" app.log | 正規表現でORパターン |
| 特定パターンの除外 | grep -v "DEBUG" app.log | DEBUGを含まない行のみ表示 |
| ファイル横断検索 | grep -rn "api_key" --include="*.env" . | envファイル内のapi_keyを再帰検索 |
システム情報・リソース監視コマンド
| コマンド | 用途 | 使用例 | 確認できる情報 |
|---|
| ps | プロセス一覧を表示 | ps aux --sort=-%mem | PID、CPU使用率、メモリ使用率、コマンド名 |
| top / htop | リアルタイムでシステム状態を監視 | htop | CPU、メモリ、プロセスをリアルタイム表示。htopはカラー対応 |
| df | ディスク使用量を表示 | df -h | -h で人間可読形式。マウントポイントごとの空き容量 |
| du | ディレクトリごとのサイズを表示 | du -sh /var/log/* | -s(合計のみ)、-h(人間可読形式)。容量逼迫時に原因特定 |
| free | メモリ使用量を表示 | free -h | 物理メモリ、スワップ領域の使用状況 |
| uname | システム情報を表示 | uname -a | カーネルバージョン、アーキテクチャ等 |
| uptime | 稼働時間とロードアベレージを表示 | uptime | 直近1分・5分・15分のロードアベレージ |
uptimeやtopで表示されるロードアベレージは、CPUの「待ち行列の長さ」を示す。4コアのサーバーでロードアベレージが4.0なら適正、8.0以上はキューが溜まり過負荷状態と判断する。
ネットワークコマンド
| コマンド | 用途 | 使用例 | 主要オプション |
|---|
| curl | HTTPリクエストを送信 | curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' | -X(HTTPメソッド)、-H(ヘッダー)、-d(データ)、-o(ファイルに出力)、-v(詳細表示) |
| wget | ファイルをダウンロード | wget -r -l 2 | -r(再帰的DL)、-O(出力ファイル名指定)、-c(中断からの再開) |
| ssh | リモートサーバーに接続 | ssh -i ~/.ssh/key.pem user@192.168.1.10 | -i(秘密鍵指定)、-p(ポート指定)、-L(ポートフォワーディング) |
| scp | リモートとのファイル転送 | scp local.tar.gz user@server:/tmp/ | -r(ディレクトリ再帰)、-P(ポート指定) |
| ping | ネットワーク疎通確認 | ping -c 4 google.com | -c(回数指定)。疎通確認の第一歩 |
| ss / netstat | ネットワーク接続状態を表示 | ss -tlnp | -t(TCP)、-l(LISTEN中)、-n(数値表示)、-p(プロセス名) |
パーミッションとプロセス管理
| コマンド | 用途 | 使用例 | 説明 |
|---|
| chmod | ファイルの権限を変更 | chmod 755 deploy.sh | 数値指定: r=4, w=2, x=1 の合計。755は「所有者rwx、グループrx、他rx」 |
| chown | ファイルの所有者を変更 | chown -R www-data:www-data /var/www | -R で再帰的に変更。Webサーバーの公開ディレクトリ設定で多用 |
| sudo | 管理者権限でコマンドを実行 | sudo systemctl restart nginx | sudoers設定で実行可能なコマンドを制限できる |
| kill | プロセスにシグナルを送信 | kill -9 12345 | -15(SIGTERM、正常終了要求)、-9(SIGKILL、強制終了)。まず-15を試す |
| bg / fg | バックグラウンド/フォアグラウンド切り替え | Ctrl+Z → bg | Ctrl+Zで一時停止 → bg でバックグラウンド実行 |
| nohup | ログアウト後もプロセスを継続 | nohup python3 train.py & | 出力はnohup.outに。長時間処理で使用 |
chmod 数値の早見表
| 数値 | 権限 | 用途例 |
|---|
| 700 | rwx------ | 秘密鍵(所有者のみ全権限) |
| 755 | rwxr-xr-x | 実行スクリプト(他ユーザーも実行可) |
| 644 | rw-r--r-- | 設定ファイル(他ユーザーは読み取りのみ) |
| 600 | rw------- | SSH秘密鍵(.ssh/id_rsa に必須の権限) |
| 777 | rwxrwxrwx | 全権限(セキュリティリスク大。原則使用禁止) |
パッケージ管理──ディストリビューション別比較
Linuxディストリビューションごとにパッケージマネージャーが異なる。macOSのHomebrewとの対応も把握しておくと環境構築がスムーズだ。
| 操作 | apt (Ubuntu/Debian) | yum/dnf (CentOS/RHEL/Fedora) | brew (macOS) |
|---|
| パッケージ検索 | apt search nginx | dnf search nginx | brew search nginx |
| インストール | sudo apt install nginx | sudo dnf install nginx | brew install nginx |
| アンインストール | sudo apt remove nginx | sudo dnf remove nginx | brew uninstall nginx |
| アップデート(リスト更新) | sudo apt update | sudo dnf check-update | brew update |
| アップグレード(パッケージ更新) | sudo apt upgrade | sudo dnf upgrade | brew upgrade |
| インストール済み一覧 | apt list --installed | dnf list installed | brew list |
Docker環境ではUbuntu/Debianベースのイメージが主流のため、apt系コマンドの使用頻度が最も高い。
パイプとリダイレクト──コマンドを組み合わせる技術
Linuxの真の力は、単体のコマンドではなくコマンドの組み合わせにある。パイプとリダイレクトがその接着剤だ。
| 記号 | 意味 | 使用例 | 説明 |
|---|
| | | パイプ:前のコマンドの出力を次の入力に渡す | ps aux | grep python | wc -l | pythonプロセスの数を数える |
| > | リダイレクト:出力をファイルに書き込み(上書き) | ls -la > filelist.txt | ファイル一覧をテキストに保存 |
| >> | 追記リダイレクト:出力をファイルに追記 | echo "完了" >> log.txt | 既存ファイルに追記 |
| < | 入力リダイレクト:ファイルから入力を読み込み | sort < unsorted.txt | ファイルの内容をソートに渡す |
| 2> | 標準エラー出力のリダイレクト | command 2> error.log | エラーメッセージのみファイルに保存 |
| 2>&1 | 標準エラーを標準出力にマージ | command > all.log 2>&1 | すべての出力を1つのファイルに |
実務で使う組み合わせ5選
| 目的 | コマンド例 | 解説 |
|---|
| ログから直近1時間のエラーを集計 | grep "ERROR" app.log | tail -n 100 | awk '{print $4}' | sort | uniq -c | sort -rn | エラー種別ごとの発生回数を降順表示 |
| ディスク使用量の大きいディレクトリTop10 | du -sh /var/* 2>/dev/null | sort -rh | head -10 | 容量逼迫時の原因特定に有効 |
| 特定ポートを使用中のプロセスを特定 | ss -tlnp | grep :8080 | ポート競合の解決に使用 |
| CSVの特定列を抽出して集計 | cut -d',' -f3 data.csv | sort | uniq -c | sort -rn | データ分析の簡易ツールとして |
| 変更されたファイルをまとめてコピー | find . -mtime -1 -type f | xargs cp -t /backup/ | 直近24時間に更新されたファイルをバックアップ |
macOS と Linux のコマンド差異
| コマンド/場面 | macOS (BSD) | Linux (GNU) | 備考 |
|---|
| sed の -i オプション | sed -i '' 's/old/new/g' file | sed -i 's/old/new/g' file | macOSはバックアップ拡張子が必須(空文字列で回避) |
| date コマンド | date -v+1d(相対指定) | date -d "+1 day"(自然言語指定) | 書式が全く異なる |
| readlink | readlink file(フルパス非対応) | readlink -f file(フルパス対応) | macOSは greadlink (coreutils) で代替 |
| xargs のデフォルト動作 | -0 オプションが必要な場面が多い | GNU xargs はより柔軟 | macOSでは gxargs を推奨 |
| パッケージマネージャー | brew | apt / dnf / pacman | Homebrewが事実上の標準 |
| GNUコマンドの導入 | brew install coreutils | 標準搭載 | g接頭辞(gdate, gsed等)で使用可能 |
学習リソースとステップアップ
Linuxコマンドの習得は「暗記」ではなく「反復」で身につく。実際にターミナルを開いて手を動かすことが最も効率的な学習法だ。
| リソース | 種類 | 特徴 |
|---|
| Linux Journey (linuxjourney.com) | 無料Webチュートリアル | ステップバイステップ。初心者に最適 |
| OverTheWire: Bandit | CTF形式の演習 | SSH接続でLinuxコマンドを実践的に学べる |
| tldr pages (tldr.sh) | コマンドリファレンス | man よりも実用例に特化した簡潔なリファレンス |
| ExplainShell (explainshell.com) | コマンド解析ツール | 複雑なパイプラインを分解して説明 |
| LPI Linux Essentials | 資格 | Linux基礎の国際資格。初学者の到達点として適切 |
| LPIC-1 / LinuC レベル1 | 資格 | 実務レベルの証明。日本ではLinuCの認知度も高い |
まとめ──まず覚えるべき5コマンド
| 優先度 | コマンド | 理由 |
|---|
| 1 | ls / cd / pwd | ファイルシステムの移動はすべての起点 |
| 2 | grep | ログ調査、コード検索、パイプラインの中核 |
| 3 | tail -f | サーバー運用でリアルタイムログ監視は必須 |
| 4 | パイプ(|)とリダイレクト(>) | コマンドの組み合わせで生産性が飛躍的に向上 |
| 5 | chmod / sudo | 権限管理を理解しないとサーバー運用ができない |
本記事で紹介した30のコマンドは、Linuxの膨大なコマンド体系のほんの入口に過ぎない。しかし、この30コマンドとパイプラインを自在に使いこなせれば、日常の開発作業の大半はカバーできる。GUIでは数十クリックかかる作業が、パイプラインを繋げば一行で完了する。クラウドとコンテナが当たり前になった2026年、Linuxコマンドの習熟はエンジニアの「基礎体力」そのものだ。あなたが次にターミナルを開いたとき、最初に叩くコマンドは何だろうか。