Linux環境で作業していると、「あの処理をするコマンドは何だっけ?」「主要なオプションの組み合わせを今すぐ確認したい」という場面に頻繁に遭遇します。「手作業は負け」を掲げるエンジニアにとって、コマンドの検索や構文確認に時間を奪われるのは避けたいところです。
本記事では、システム運用や開発の実務現場で本当によく使われる主要Linuxコマンドを用途別に体系化し、主要オプション一覧と最短1行で動く実用コードブロック(逆引き早見表)としてまとめました。
日常のターミナル作業の効率化から障害対応、シェルスクリプト作成の辞書としてぜひ手元に置いてご活用ください。
1. 【用途別】Linux主要コマンド逆引き早見表マップ
実務で頻出する主要Linuxコマンドを用途・ジャンル別に分類した全体マップです。目的の操作から必要なコマンドを素早く逆引きできます。
| 用途ジャンル | 主要コマンド | 主な実務ユースケース |
|---|---|---|
| ファイル・ディレクトリ操作 | ls, cd, pwd, mkdir, cp, mv, rm, find, tree, split, mktemp, tar, zip |
ファイル作成・移動・コピー・一括削除・高度な検索・ツリー構造把握・アーカイブ展開 |
| テキスト処理・ログ調査 | grep, ripgrep, sed, awk, cut, tr, less, tail, head, xargs, sort, uniq, wc, mapfile |
エラーログ高速抽出・文字列置換・CSV/TSV列抽出・リアルタイムログ監視・行数/件数集計 |
| システム・プロセス管理 | ps, pgrep, top, kill, pkill, killall, systemctl, journalctl, df, du, free, iostat, nohup, crontab |
稼働プロセス特定・安全な強制終了・systemdサービス管理・ディスク容量/メモリ調査・定期自動実行 |
| ネットワーク・リモート操作 | ssh, sftp, rsync, scp, curl, wget, ss, ping, traceroute, nslookup |
安全なSSH接続・差分ファイル高速同期・Web API通信・ポート開放確認・ネットワーク疎通確認 |
| ユーザー・権限・セキュリティ | chmod, chown, umask, sudo, su, useradd, passwd, export |
パーミッション変更・所有者変更・新規作成時の権限マスク・root昇格・環境変数の設定 |
2. ファイル・ディレクトリ操作コマンド早見表
ファイルやディレクトリの操作は、Linux運用のすべての基本です。手作業での操作ミスを防ぐための主要オプションと実例を整理しました。
| コマンド | 主要オプション | 機能・用途 | 詳細個別ガイド |
|---|---|---|---|
ls |
-l(詳細), -a(隠しファイル), -h(人可読単位), -t(更新順), -r(逆順) |
ファイル・ディレクトリ一覧表示 | – |
cd |
-(直前ディレクトリ), ..(親ディレクトリ), ~(ホーム) |
カレントディレクトリの移動 | – |
pwd |
-P(物理パス表示・シンボリックリンク解決) |
現在作業中ディレクトリの表示 | – |
mkdir |
-p(親ディレクトリごと作成), -m(権限指定) |
新規ディレクトリの作成 | – |
cp |
-r(再帰コピー), -p(属性保持), -a(完全アーカイブコピー), -u(更新分のみ) |
ファイル・ディレクトリの複製 | ディレクトリごとcpコピー解説 |
mv |
-i(上書き前確認), -u(更新分のみ), -b(バックアップ作成) |
ファイル・ディレクトリの移動・名前変更 | – |
rm |
-r(再帰削除), -f(警告なし強制削除), -i(削除前確認) |
ファイル・ディレクトリの削除 | – |
find |
-name(ファイル名), -type(種類), -mtime(更新日), -size(サイズ), -exec(実行) |
条件指定による高度なファイル検索 | – |
tree |
-L(階層数制限), -d(ディレクトリのみ), -I(除外パターン指定) |
ディレクトリ構造のツリー表示 | treeコマンド徹底解説 |
split |
-b(サイズ指定分割), -l(行数指定分割), -d(数字連番サフィックス) |
大容量ファイルの分割 | splitコマンド活用法 / ファイル分割・結合手順 |
mktemp |
-d(一時ディレクトリ作成), -p(作成先指定) |
衝突しない安全な一時ファイル/ディレクトリ生成 | mktempコマンド解説 |
tar / zip |
-czvf(tar.gz作成), -xzvf(tar.gz展開), -tf(一覧表示) |
アーカイブの圧縮・解凍 | zip/tar.gz解凍まとめ / tarコマンド入門 |
2.1 ディレクトリ・ファイル操作の基本(ls / cd / mkdir / cp / mv / rm)
日常的によく使う基本操作の最短実行ワンライナーです。
# 詳細情報・人可読サイズ・更新日時順(新しい順)でファイル一覧を表示
ls -lh -t
# 親ディレクトリも含めて深い階層を一括作成
mkdir -p /opt/app/logs/archive
# 権限やタイムスタンプを完全に保持したままディレクトリを再帰コピー
cp -a /var/www/src /var/www/backup_src
# 既存ファイルを誤って上書きしないよう確認プロンプト付きで移動
mv -i config.json /etc/app/config.json
# 不要な一時ディレクトリを強制的に再帰削除
rm -rf /tmp/scratch_dir
ディレクトリ全体のバックアップやコピー時のオプション選定(-a や -r の違い)については、ディレクトリごとcpコマンドでコピーする方法:オプション徹底解説 で詳しく解説しています。
2.2 ファイル検索と構造把握(find / tree)
大量のファイルから特定の更新日時や拡張子のファイルを抽出したり、プロジェクトのディレクトリ構成を俯瞰する際に不可欠です。
# 7日以上前に更新された拡張子.logの通常ファイルを検索
find /var/log/app -name "*.log" -type f -mtime +7
# ディレクトリ構造を深さ2階層までに制限し、不要なディレクトリを除外してツリー表示
tree -L 2 -I "node_modules|.git|vendor"
プロジェクト構成を美しく可視化するノウハウは、treeコマンドの使い方 をご参照ください。
2.3 ファイル分割・一時ファイル作成(split / mktemp)
大容量ログの退避や、シェルスクリプト内で並列処理を行う際の一時領域作成に役立ちます。
# 大容量ログファイルを100MBごとに数字連番(_00, _01...)で分割
split -b 100M -d access_huge.log access_part_
# スクリプト内で名前競合の起きない安全な一時ディレクトリを作成
TMP_DIR=$(mktemp -d /tmp/deploy_app.XXXXXX)
分割したファイルを cat で結合・復元する実務手順は 大きなファイルを分割・結合する方法|splitとcatで効率処理、一時ファイル管理のベストプラクティスは mktempコマンド解説 をご覧ください。また、アーカイブ展開全般については zipやtar-gzを解凍する方法|OS別対応まとめ および 初心者でも理解できるtarコマンドの使い方と便利 で体系的にまとめています。
3. テキスト処理・ログ調査コマンド早見表
障害対応やアクセス解析、CSVデータ加工で威力を発揮するテキスト処理コマンド群です。
| コマンド | 主要オプション | 機能・用途 | 詳細個別ガイド |
|---|---|---|---|
grep |
-i(大文字小文字無視), -v(除外検索), -r(再帰検索), -E(拡張正規表現), -n(行番号) |
文字列パターン検索 | grepコマンド徹底解説 |
ripgrep (rg) |
-i(大文字小文字無視), -g(glob除外/指定), -C(前後行表示), -t(ファイル種別指定) |
超高速な再帰テキスト検索 | ripgrepコマンド解説 |
sed |
-i(ファイル直接上書き), -e(複数式指定), -E(拡張正規表現) |
ストリームエディタ(文字列置換・行削除) | – |
awk |
-F(区切り文字指定), NR(行番号), NF(列数) |
列抽出・集計・テキスト整形処理 | – |
cut |
-d(区切り文字指定), -f(抽出列番号), -c(文字位置指定) |
行の特定列(フィールド)切り出し | cutコマンド徹底ガイド |
tr |
-d(指定文字削除), -s(連続文字の圧縮) |
文字の置換・削除(標準入力対象) | trコマンド解説 |
less |
+F(ログ追尾), -N(行番号表示), -S(長い行の折り返し禁止) |
ページャーによる大容量ファイル閲覧 | – |
tail |
-f(リアルタイム監視), -F(ローテーション追従), -n(行数指定) |
ファイル末尾の表示・監視 | – |
head |
-n(先頭行数指定), -c(先頭バイト数指定) |
ファイル先頭の表示 | – |
xargs |
-n(引数個数), -I{}(置換文字), -P(並列実行数), -0(null区切り受信) |
パイプ出力を引数に渡して一括/並列実行 | xargs解説 / xargs並列処理ガイド |
sort |
-n(数値ソート), -r(逆順), -k(対象列指定), -u(重複排除) |
テキスト行の並び替え | – |
uniq |
-c(出現件数カウント), -d(重複行のみ表示), -u(重複なし行表示) |
隣接する重複行の除外・集計 | – |
wc |
-l(行数カウント), -w(単語数), -c(バイト数) |
行数・単語数の計測 | wcコマンド解説 |
mapfile |
-t(改行文字の除去) |
標準入力をBash配列変数に一括格納 | mapfileコマンド解説 |
3.1 高速テキスト・ログ検索(grep / ripgrep)
ギガバイト規模のログファイルから特定のエラーやIPアドレスを素早く炙り出します。
# NginxログからHTTP 500番台のエラーを行番号付き・拡張正規表現で抽出
grep -inE "HTTP/[0-9.]+ 5[0-9]{2}" /var/log/nginx/access.log
# ripgrepでログディレクトリ全体から圧縮ファイルを除外しつつ「FATAL」を高速検索
rg -i "fatal" /var/log/app/ -g "!*.gz"
日常的な検索は grepコマンドの使い方、大規模コードベースや巨大ログの高速検索は ripgrep徹底解説 をご覧ください。
3.2 文字列の置換・列抽出(sed / awk / cut / tr)
データ加工や設定ファイルの一括置換を行う鉄板コマンドです。
# 設定ファイル内の環境変数を一括置換してファイルを直接上書き
sed -i 's/APP_DEBUG=true/APP_DEBUG=false/g' .env
# アクセスログから「第1列(IPアドレス)」と「最終列(レスポンスタイム)」を抽出
awk '{print $1, $NF}' /var/log/nginx/access.log
# カンマ区切りのCSVファイルから1列目と3列目を抽出
cut -d ',' -f 1,3 users.csv
# Windows特有のCRLF改行コードをLFへ一括変換
tr -d '
' < crlf.txt > lf.txt
列抽出の詳細は cutコマンドの使い方徹底ガイド、文字置換のテクニックは trコマンド解説 で詳しく解説しています。
3.3 ログ閲覧・リアルタイム監視(less / tail -f / head)
デプロイ直後の挙動確認や障害時のライブトレースに必須です。
# アプリケーションログの末尾をローテーション追従(-F)でリアルタイム監視
tail -F /var/log/app/application.log
# 巨大なシステムログを行折り返しなし・行番号付きで軽量に閲覧
less -S -N /var/log/syslog
# ファイルのヘッダー先頭10行を素早く確認
head -n 10 /var/log/auth.log
3.4 パイプ連携と集計(xargs / sort / uniq / wc / mapfile)
複数のコマンドをパイプで繋ぎ合わせ、複雑なログ集計や並列処理をワンライナーで完結させます。
# アクセスログからIPアドレス別アクセス数を集計し、多い順にTop 10を表示
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
# エラーログの総行数を瞬時にカウント
grep "ERROR" app.log | wc -l
# findで検索したファイルを4並列で一括gzip圧縮
find /var/log/archive -name "*.log" -print0 | xargs -0 -P 4 -I{} gzip {}
# コマンド実行結果の各行をBashの配列変数に一括読み込み
mapfile -t ACTIVE_USERS < <(who | awk '{print $1}' | sort -u)
並列バッチ処理の高速化は xargsコマンド解説 および 並列処理でスクリプトを加速するxargsとGNU Parallel活用法、行数カウントは wcコマンド解説、配列格納は mapfileコマンド徹底解説 を参照してください。
4. システム・プロセス・リソース管理コマンド早見表
サーバーの負荷急増、メモリ枯渇、暴走プロセスの停止など、インフラ運用で命綱となるコマンド一覧です。
| コマンド | 主要オプション | 機能・用途 | 詳細個別ガイド |
|---|---|---|---|
ps |
aux(全プロセス詳細), -ef(ツリー・親PID表示) |
稼働中プロセスの状態一覧表示 | psコマンド基本解説 |
pgrep |
-l(プロセス名付き), -f(コマンドライン完全一致) |
条件一致するプロセスのPID特定 | - |
top |
-b(バッチモード), -n(更新回数), -p(指定PID監視) |
CPU・メモリ使用率のリアルタイム監視 | - |
kill |
-15(SIGTERM・安全終了), -9(SIGKILL・強制終了), -HUP(設定再読込) |
プロセスへのシグナル送信・停止 | killコマンドとプロセス管理 |
pkill |
-f(引数パターン一致), -u(特定ユーザー指定) |
プロセス名を指定した一括シグナル送信 | pkillコマンド解説 |
killall |
-r(正規表現指定), -I(大文字小文字無視) |
指定した名前のプロセスを一括終了 | - |
systemctl |
status, start, stop, restart, enable, disable |
systemdサービスの起動・停止・自動起動管理 | systemctl完全ガイド |
journalctl |
-u(ユニット指定), -f(リアルタイム監視), -xe(詳細エラー表示) |
systemdのシステム・サービスログ確認 | journalctlログ調査ガイド |
df |
-h(人可読単位), -T(ファイルシステム種別), -i(inode使用量) |
ディスク全体の空き容量・使用率確認 | dfコマンド解説 |
du |
-h(人可読単位), -s(合計のみ表示), -d(深さ制限) |
ディレクトリ・ファイル容量の集計特定 | duコマンド解説 |
free |
-h(人可読単位), -m(MB単位), -s(更新間隔指定) |
物理メモリ・スワップの使用量確認 | freeコマンドでメモリ把握 |
iostat |
-x(拡張統計情報), -d(ディスクのみ), -c(CPUのみ) |
ディスクI/O負荷・スループット計測 | - |
nohup |
&(バックグラウンド実行との併用) |
ログアウト後も処理を継続実行 | nohup活用法 |
crontab |
-e(編集), -l(一覧表示), -r(削除) |
定期的なジョブ自動実行スケジュール管理 | cron設定ガイド / cron曜日指定自動化 |
4.1 プロセス特定と安全な強制終了(ps / pgrep / kill / pkill / killall)
暴走プロセスの停止では、いきなり kill -9(強制終了)を実行するのではなく、まず SIGTERM(15) で安全にリソース解放を促すのが運用の基本です。
# 引数を含むコマンドライン全体からNode.jsプロセスのPIDを特定
pgrep -fl "node server.js"
# 特定PIDのプロセスを安全に正常終了(SIGTERM送信)
kill -15 12345
# 応答しないプロセスを強制終了(SIGKILL送信)
kill -9 12345
# プロセス名パターンを指定して関連プロセスを一括終了
pkill -f "python worker.py"
プロセスの調査は psコマンドの使い方、安全な終了フローは killコマンドと安全なプロセス管理、一括停止は pkillコマンド解説 で整理しています。
4.2 サービス管理とシステムログ(systemctl / journalctl)
modern Linuxにおけるサービス管理のデファクトスタンダードです。
# Nginxサービスの状態・直近エラーをまとめて確認
systemctl status nginx
# Nginxの自動起動を有効化して即座に起動開始
systemctl enable --now nginx
# 特定サービスのエラーログを末尾50行からリアルタイムで追従監視
journalctl -u nginx -f -n 50 --no-pager
サービス操作の詳細は systemctlコマンド完全ガイド、システムログ分析は journalctlログ調査ガイド をご覧ください。
4.3 ディスク・メモリ・リソース調査(df / du / free / iostat)
Disk Fullによるサービス停止や、メモリ枯渇(OOM Killer)を未然に防ぐための基本チェックコマンドです。
# 各マウントポイントのディスク空き容量とファイルシステムを人可読形式で確認
df -hT
# /var配下で最も容量を消費している上位5ディレクトリを特定
du -h -d 1 /var 2>/dev/null | sort -hr | head -n 5
# 物理メモリの空き容量(available)をMB単位で確認
free -m
ディスク容量調査は dfコマンド解説 および duコマンド解説、メモリ管理は freeコマンドでメモリ把握 で解説しています。
4.4 バックグラウンド・定期実行(nohup / tmux / crontab)
SSHログアウト後も処理を継続させたい長時間タスクや、日次のバッチ自動化を設定します。
# SSH切断後もバックグラウンドでスクリプトを実行し、標準出力・標準エラーをログに保存
nohup ./heavy_backup.sh > backup.log 2>&1 &
# crontabに登録されている定期実行スケジュールを一覧表示
crontab -l
バックグラウンド常駐化は nohup活用法、定期実行スケジューリングは cron設定ガイド および cronの曜日指定による定期自動化 をご確認ください。
5. ネットワーク・リモート操作コマンド早見表
サーバー間ファイル転送、Web APIリクエスト、ネットワーク不通時の原因切り分けに必須のコマンド群です。
| コマンド | 主要オプション | 機能・用途 | 詳細個別ガイド |
|---|---|---|---|
ssh |
-p(ポート指定), -i(秘密鍵指定), -o(接続オプション指定) |
リモートサーバーへの暗号化セキュア接続 | SSH切り分け手順 |
sftp |
-P(ポート指定), -i(秘密鍵指定), -b(バッチ実行) |
SSH経由のセキュアファイル送受信 | sftpコマンド解説 / SFTP・rsyncを選ぶ理由 |
rsync |
-a(属性保持), -v(詳細表示), -z(圧縮転送), -P(進捗+再開), --delete(完全同期) |
差分検知による高速ファイル同期 | rsync徹底解説 / rsync over SSH完全ガイド |
scp |
-P(ポート指定), -r(再帰コピー), -p(属性保持) |
SSH経由の簡易ファイル転送 | - |
curl |
-s(サイレント), -S(エラー表示), -o / -O(保存), -X(メソッド), -H(ヘッダー), -d(POSTデータ), -I(ヘッダー取得) |
HTTP/HTTPSリクエスト・API通信 | curlコマンド徹底解説 |
wget |
-q(静かに実行), -O(ファイル名指定保存), -c(中断再開), -r(再帰ダウンロード) |
Webファイルの一括ダウンロード | - |
ss |
-t(TCP), -u(UDP), -l(Listen状態), -p(PID表示), -n(数値表記) |
ソケット・ポート開放状態の高速確認(netstat代替) | ssコマンド解説 |
ping |
-c(送信回数指定), -i(送信間隔秒), -W(タイムアウト秒) |
ICMPによるネットワーク疎通確認 | pingでネット接続確認 |
traceroute |
-n(名前解決なし), -m(最大ホップ数), -w(応答待ち秒) |
パケット到達までのネットワーク経路調査 | - |
nslookup |
- | DNS名前解決・IPアドレス/レコード問い合わせ | - |
5.1 リモート接続と安全なファイル転送(ssh / sftp / rsync / scp)
サーバー間ファイル転送において、現代の実務では中断再開や差分転送に優れた rsync や sftp を利用するのがスタンダードです。
# 秘密鍵とポート番号を指定してリモートサーバーへSSHログイン
ssh -i ~/.ssh/id_rsa_prod -p 2222 deploy@192.168.1.100
# 差分のみを圧縮転送し、送信元で削除されたファイルも同期先に反映(rsync over SSH)
rsync -avzP --delete -e 'ssh -p 2222' /var/www/html/ deploy@192.168.1.100:/var/www/html/
SSHトラブル対応は SSH接続できないときのチェックリスト、同期自動化は サーバー同期はこれでOK|rsync over SSH完全ガイド、コマンド仕様は rsyncコマンド徹底解説 および sftpコマンド解説、転送ツールの選定基準は 今後はSFTP・rsyncを選ぶ理由 をご参照ください。
5.2 HTTP通信・APIリクエスト(curl / wget)
Webサービスの稼働監視(ヘルスチェック)やREST API連携に活用します。
# JSONヘッダーを指定してPOSTリクエストを送信し、HTTPステータスコードのみ取得
curl -s -o /dev/null -w "%{http_code}
" -X POST -H "Content-Type: application/json" -d '{"status":"ok"}' https://api.example.com/v1/health
# Web上の大容量アーカイブファイルを中断再開可能(-c)でダウンロード
wget -c https://example.com/downloads/archive.tar.gz
API連携の実践テクニックは curlコマンド徹底解説 で網羅しています。
5.3 ポート開放確認とネットワーク疎通(ss / ping / traceroute / nslookup)
「サービスを起動したのに外部から通信できない」といったネットワーク障害の原因を瞬時に切り分けます。
# 待ち受け中(Listen)のTCPポートと対応プロセスのPIDを一覧表示
ss -tlpn
# 3回だけパケットを送信して対象サーバーとの疎通と往復遅延を確認
ping -c 3 8.8.8.8
# ドメイン名に対応するIPアドレスとDNSレコードを問い合わせ
nslookup example.com
ポート確認の詳細は ssコマンド解説、疎通テストは 通信が不安定?pingコマンドでネット接続を確認する手順 をご覧ください。
6. ユーザー・権限・セキュリティ管理コマンド早見表
パーミッションや所有権の設定ミスは、セキュリティ事故やプログラムの動作不全(Permission Denied)に直結します。
| コマンド | 主要オプション | 機能・用途 | 詳細個別ガイド |
|---|---|---|---|
chmod |
-R(再帰的変更), u/g/o/a(対象指定), +/-/=(権限付与・剥奪) |
ファイル・ディレクトリのアクセス権限変更 | chmod早見表・使い方 |
chown |
-R(再帰的変更), ユーザー:グループ 形式で一括指定 |
ファイル・ディレクトリの所有者・グループ変更 | - |
umask |
-S(シンボリック表記表示) |
新規ファイル/ディレクトリ作成時の権限マスク設定 | - |
sudo |
-u(特定ユーザー実行), -i(rootログインシェル起動), -l(権限一覧) |
管理者権限でのコマンド実行 | - |
su |
-(環境変数を引き継いでログイン) |
別のユーザー(主にroot)への切り替え | - |
useradd |
-m(ホームディレクトリ作成), -s(ログインシェル指定), -G(グループ追加) |
新規ユーザーアカウントの作成 | - |
passwd |
-l(アカウントロック), -u(ロック解除) |
ユーザーパスワードの変更・設定 | - |
export |
-p(環境変数一覧表示), -n(エクスポート解除) |
環境変数の設定・子プロセスへの引き継ぎ | exportコマンド解説 |
6.1 パーミッション変更と所有権(chmod / chown / umask)
Webサーバー公開ディレクトリ(例: /var/www/html)の安全な権限設定例です。
# ディレクトリを755、ファイルを644に一括設定
chmod 755 /var/www/html && find /var/www/html -type f -exec chmod 644 {} +
# ディレクトリ配下の所有者をwww-dataユーザーかつwww-dataグループに再帰変更
chown -R www-data:www-data /var/www/html
# 新規作成ファイルのデフォルト権限を「所有者のみフルアクセス(600/700)」に制限
umask 077
パーミッション数値(755/644/700/600/777)の詳細な意味や find 連携での一括変更手順は、【chmod早見表】755/644/777の数字の意味とパーミッション変更(-R)・権限エラー解決完全ガイド で詳しく解説しています。
6.2 ユーザー管理と権限昇格(sudo / su / useradd / passwd)
日常業務は一般ユーザーで行い、必要な処理のみ管理者権限に昇格させます。
# root権限でNginxサービスを再起動
sudo systemctl restart nginx
# 環境変数をクリーンにロードした状態でrootシェルへ切り替え
sudo -i
# アプリケーション用の環境変数を設定してエクスポート
export APP_ENV="production"
環境変数の永続化設定(.bashrc への記述)や確認手順は、初心者向け:環境変数の設定と確認|exportコマンド を参照してください。
7. 実務で即使える!コマンド組み合わせ鉄板ワンライナー集
現場で日常的に実行される、複数コマンドをパイプ連携させた強力なワンライナー集です。
7.1 大容量ファイルを一括特定して削除する(find + du + xargs)
ディスク容量が枯渇しかけた緊急時に、容量を圧迫している古いログファイルを安全に一括削除します。
# 30日以上前の100MB以上の.logファイルを検索し、安全に一括削除
find /var/log/app -type f -name "*.log" -mtime +30 -size +100M -print0 | xargs -0 -r rm -v
7.2 エラーログの発生件数を時間帯別に集計する(grep + awk + sort + uniq)
障害発生時のスパイクや傾向を特定するため、エラーログを時間(時単位)ごとにグループ化して件数集計します。
# ログ内の「ERROR」行から時間部分(例: 14時台)を抽出して時間帯別件数を集計
grep "ERROR" /var/log/app/application.log | awk '{print substr($2, 1, 2)}' | sort | uniq -c
7.3 リモートサーバーへ安全に差分バックアップする(rsync over SSH)
ネットワーク帯域を制限しつつ、暗号化SSHトンネル経由でバックアップサーバーへ安全に差分同期します。
# SSHポート指定・帯域制限(2000KB/s)・一時ファイル除外でバックアップ同期
rsync -avzP --bwlimit=2000 -e 'ssh -p 2222' --exclude='*.tmp' /data/backup/ backup-user@remote.server.com:/storage/backup/
8. よくあるエラー・実行時の落とし穴と安全対策
コマンドライン操作で重大なインシデントを引き起こさないための安全策です。
rm -rf の誤爆を防ぐ安全策
シェルスクリプトで rm -rf "$TARGET_DIR/*" のように記述した場合、変数 $TARGET_DIR が未定義(空文字)だと rm -rf /* と解釈され、システム全体が破壊されます。必ず set -u(未定義変数の検知)を有効化するか、rm -rf "${TARGET_DIR:?}/"* のように初期値チェック構文を使用しましょう。
パイプラインでのエラー検知(set -o pipefail)
通常、Bashのパイプライン cmd1 | cmd2 | cmd3 の終了ステータスは「最後のコマンド(cmd3)」の結果のみが返されます。途中の cmd1 が異常終了しても全体として成功扱いになってしまうため、スクリプト冒頭には必ず以下の鉄板設定を記述しましょう:
# エラー発生時に即座にスクリプトを停止し、パイプラインの途中エラーも検知する鉄板設定
set -euo pipefail
改行コード(CRLF / LF)や文字コードによる誤動作対策
Windows環境で作成・編集したスクリプト(CRLF)をLinuxで実行すると、 や文法エラーが発生します。Windows上でBashを動かす場合やスクリプトを共有する際は、必ず改行コード(LF)と文字コード(UTF-8)に統一してください。
: command not found
Windows環境での開発やBash環境の構築手順については、Windows×Bash環境構築ガイド で詳しく解説しています。
9. まとめ & シェルスクリプト入門へのステップアップ
Linuxコマンドは、個々のオプションを丸暗記するのではなく、「パイプで繋げて自動化する」 ことで真価を発揮します。
- ファイル・テキスト・プロセスの基本コマンドを押さえ、手作業を減らす。
- 主要オプション(
-h,-r,-f,-p,-v)の共通パターンを掴む。 - パイプやxargsで組み合わせることで、数千行のデータ処理も一撃で完了させる。
一通りのコマンドに慣れたら、これらを組み合わせて一連の業務を完全自動化する シェルスクリプトの世界 へステップアップしましょう。
👉 次のステップ:シェルスクリプト入門完全ガイド|基礎から自動化の書き方まで

コメント