【付録】「あれ、あのコマンドなんだっけ?」を秒で解決。プロが隠し持つ「虎の巻」を公開
こんにちは!「リナックス先生」です。
全5回の「実践シェルスクリプト講座」、完走おめでとうございます!
コウ君、スクリプトを書くのには慣れてきた?
先生!講座のおかげで自動化は楽しいんですけど…
「あれ、文字列を置換するのって sed だっけ? awk だっけ?」とか、「検索オプションなんだっけ?」って毎回ググってしまって、手が止まっちゃうんです。
それは現役エンジニアでも同じよ!
コマンドのオプションを全部暗記する必要なんてないわ。
大切なのは「使えるパターンの引き出し」を持っておくこと。
今回は、講座の総決算として、現場で頻繁に使う「実用ワンライナー(一行コマンド)」をまとめたわ。困ったときの辞書として使ってね!
本記事は、これまでの講座の補足資料となる「保存版チートシート」です。
ログ調査、ファイル操作、サーバー状態確認など、コピペで使えるテクニックを厳選しました。
1. テキスト処理の「三種の神器」 (grep, sed, awk)
シェルスクリプトの力の9割は、この3つのコマンドで決まります。
「検索のgrep」「置換のsed」「整形のawk」と覚えましょう。
【grep】文字列検索の達人
ただ探すだけでなく、不要なものを除外したり、正規表現を使うのがプロの技です。
| 目的 | コマンド例 | 解説 |
|---|---|---|
| 除外検索 | grep -v "debug" app.log |
“debug” という文字が含まれる行を除外して表示。エラーログ調査の基本。 |
| IP抽出 | grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" |
-o でマッチした部分だけ表示、-E で拡張正規表現を使用。 |
| 再帰検索 | grep -r "TODO" /var/www/ |
ディレクトリの中の全ファイルを再帰的に検索。「あの設定どこだっけ?」に便利。 |
| 前後表示 | grep -C 3 "ERROR" app.log |
エラー行だけでなく、その前後3行も表示。文脈を知るのに必須。 |
💡 ワンポイント:検索結果に色をつける
grep --color=auto "検索語" ファイル名
最近のLinuxならデフォルトで色が付きますが、パイプでつないだ時に色が消える場合は --color=always をつけると見やすくなります。
【sed】一括置換の魔術師
ファイルの中身を書き換えたい時、いちいちエディタを開く必要はありません。
| 目的 | コマンド例 | 解説 |
|---|---|---|
| 文字列置換 | sed 's/http:/https:/g' file.txt |
ファイル内の “http:” を全て “https:” に置換して表示(ファイルは書き換えない)。 |
| 上書き保存 | sed -i 's/foo/bar/g' config.conf |
-i オプションでファイルを直接書き換える。【注意】元に戻せないのでバックアップ必須! |
| 行削除 | sed '/^#/d' config.conf |
# で始まる行(コメント行)を削除して表示。設定ファイルを見やすくする時に。 |
| 行指定表示 | sed -n '10,20p' large.log |
巨大なログの「10行目から20行目」だけを表示。 |
【awk】データ整形の万能選手
CSVやログファイルから「特定の列」を抜き出したり、集計したりするのに最適です。
| 目的 | コマンド例 | 解説 |
|---|---|---|
| 列の抽出 | awk '{print $1, $3}' access.log |
スペース区切りの1列目と3列目を表示。 |
| 区切り文字指定 | awk -F"," '{print $2}' data.csv |
-F で区切り文字をカンマに指定。CSV処理の鉄板。 |
| 条件フィルタ | awk '$5 >= 500 {print $0}' access.log |
「5列目(ステータスコードなど)が500以上」の行だけを表示。 |
| 合計計算 | ls -l | awk '{sum += $5} END {print sum}' |
ファイルサイズ(5列目)を全部足して、最後に合計を表示。電卓いらず! |
2. ファイル操作&検索の「時短」テクニック
「大量のファイルを一気にどうにかしたい」という時に役立つコマンド群です。
【find × xargs】最強の組み合わせ
find で見つけたファイルを、xargs で別のコマンドに渡して処理します。
パターン1:古いログを一括削除
# 30日以上前の .log ファイルを削除 # -print0 と -0 は、ファイル名にスペースが含まれていても安全に処理するためのおまじない find /var/log -name "*.log" -mtime +30 -print0 | xargs -0 rm -f
パターン2:特定の文字を含むファイルを検索
# phpファイルの中から "password" という文字を含むファイル名を表示 find . -name "*.php" -print0 | xargs -0 grep -l "password"
【history】過去の自分を呼び出す
長いコマンドをもう一度打ちたくない時に。
# 履歴から "ssh" を含むコマンドを検索 history | grep ssh # 直前のコマンドをもう一度実行(sudo忘れの時などに便利) sudo !!
3. サーバーの状態を「健康診断」するコマンド
「なんかサーバーが重い…」と思った時に、反射的に打つべきコマンドたちです。
【top / htop】リアルタイム負荷監視
top -c
-c をつけると、実行されているコマンドのフルパスが見えるので原因特定しやすくなります。
【free】メモリ使用量確認
free -h
-h (human readable) で「GB」や「MB」単位で表示されます。
【df】ディスク容量確認
df -hT
-T をつけると、ファイルシステムの種類(xfs, ext4など)もわかります。
【lsof / ss】ネットワークポート確認
「Webサーバーが起動しない!」という時は、ポートが既に使われていることが多いです。
# 80番ポートを使っているプロセスを特定 lsof -i :80 # または ss -anp | grep :80
4. 【保存版】シェルスクリプトのテンプレート
新しいスクリプトを書くときは、まずこれをコピペして始めましょう。
安全対策済みの「プロ仕様」テンプレートです。
#!/bin/bash
# ==========================================
# スクリプト名: script_template.sh
# 概要: ここに何をするスクリプトか書く
# 作成日: 2026/01/01
# ==========================================
# --- 安全設定(エラー即停止・未定義変数禁止・パイプエラー検知) ---
set -euo pipefail
# --- パス設定(Cron対策) ---
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# --- カレントディレクトリ移動(スクリプトのある場所へ) ---
cd "$(dirname "$0")"
# --- 設定変数 ---
LOG_FILE="/var/log/my_script.log"
NOW=$(date '+%Y-%m-%d %H:%M:%S')
# --- ログ出力関数 ---
log() {
echo "[$NOW] $1" | tee -a "$LOG_FILE"
}
# --- メイン処理 ---
log "処理を開始します"
# ここに処理を書く
if [ -f "target.txt" ]; then
log "ファイルが見つかりました"
else
log "エラー: ファイルがありません"
exit 1
fi
log "処理を終了します"
exit 0
💡 解説
set -euo pipefail: 第5回で解説した安全装置です。dirname "$0": スクリプトがどこから実行されても、相対パスがずれないようにします。tee -a: 画面にも表示しつつ、ログファイルにも保存する便利コマンドです。
まとめ:コマンドは「暗記」せず「検索」せよ
今回は、付録として「よく使うコマンド・ワンライナー」をまとめました。
エンジニアの仕事は、コマンドを暗記することではありません。
「こういうことがやりたい」と思った時に、「あ、sedでできたはず!」と思い出し、正しい構文を素早く見つけ出す能力です。
このページをブックマークして、困った時にいつでも戻ってきてください。
コウ君も、そして画面の前のあなたも、これで立派な「シェルスクリプト使い」です!
長い間、講座に付き合ってくれてありがとう!
Linuxの世界は広くて深いけれど、シェルスクリプトという武器があれば、どんな冒険も怖くないわ。
あなたのサーバーエンジニアとしての未来が、素晴らしいものになりますように!
▼練習用環境は安くて高機能なVPSで!壊してもすぐ再構築可能!


コメント