目次
概要
cat(concatenate)コマンドは、ファイルの内容を標準出力に表示したり、複数のファイルを一つに結合したりするために使用される、Linuxで最も基本的なコマンドの一つです。単に中身を確認するだけでなく、パイプラインやリダイレクトと組み合わせることで、ログ解析やドキュメント作成の補助として非常に強力な威力を発揮します。
仕様(引数・オプション)
構文
cat [オプション] [ファイル名...]
主要なオプション
| オプション | 説明 |
| -n | すべての行に行番号を付与して出力します。 |
| -b | 空行を除いた行にのみ行番号を付与して出力します。 |
| -E | 各行の末尾に「$」を表示し、行の終わりを可視化します。 |
| -s | 連続した空行を1行にまとめて出力します。 |
| -T | タブ文字を「^I」として表示し、不可視文字を可視化します。 |
基本の使い方
サーバーのアクセスログの冒頭部分を素早く確認する手順です。
BASH
# アプリケーションのアクセスログを表示し、最初の5行のみを抽出
cat /var/log/web-app/access.log | head -n 5
TEXT
192.168.1.10 - mori [26/Jan/2026:14:00:01 +0900] "GET /index.html HTTP/1.1" 200
192.168.1.11 - guest [26/Jan/2026:14:00:05 +0900] "GET /css/style.css HTTP/1.1" 200
192.168.1.10 - mori [26/Jan/2026:14:00:10 +0900] "POST /api/login HTTP/1.1" 200
192.168.1.12 - admin [26/Jan/2026:14:01:00 +0900] "GET /admin/config HTTP/1.1" 403
192.168.1.10 - mori [26/Jan/2026:14:01:05 +0900] "GET /favicon.ico HTTP/1.1" 404
実践コマンド
圧縮された過去のログアーカイブと、現在のログファイルを連結して一つの調査用ファイルを作成する実用的なパイプライン処理です。
BASH
# 行番号を付与してログを表示
cat -n /var/log/web-app/error.log | head -n 5
# zcatで解凍した古いログと現在のログを結合し、一時ファイルに出力
# 「-」は標準入力を受け取る位置を指定する特別な引数
zcat /var/log/web-app/error.log.1.gz | \
cat - /var/log/web-app/error.log \
> /tmp/mori_combined_log.txt
TEXT
1 [2026-01-26 10:00:00] ERROR: Connection timeout from 10.0.0.5
2 [2026-01-26 10:05:22] WARN: Resource spike detected
3 [2026-01-26 10:10:45] ERROR: Invalid authentication for user: mori
4 [2026-01-26 10:12:01] INFO: Background worker started
5 [2026-01-26 10:15:30] ERROR: Database connection failed
カスタムポイント
- ファイルパス:
/var/log/web-app/などのパスは、実際に解析したいログが配置されているディレクトリに変更してください。 - 出力先:
/tmp/mori_combined_log.txtは一時的なファイル名です。永続化が必要な場合は適切な保存先に変更してください。 - 表示範囲:
head -n 5の数値を変更することで、表示する行数を任意に調整できます。
注意点
- 巨大なファイル: 数GBを超えるような巨大なファイルをcatでそのまま表示しようとすると、端末の制御が困難になったりメモリを圧迫したりするため、
lessなどのページャーを検討してください。 - 実行権限: システムログなどの閲覧には
sudo権限が必要になる場合があります。 - バイナリファイル: 画像や実行バイナリをcatで出力すると、端末の表示が崩れたりビープ音が鳴り続けたりすることがあるため、対象がテキストであることを確認してください。
応用
ヒアドキュメントを利用して設定ファイルを即座に作成する例や、既存のファイルの間にメッセージを挿入する手法です。
BASH
# ヒアドキュメントで mori ユーザー用のメモを作成
cat - << EOF > /tmp/mori_task.txt
Task: Log analysis for project X
Date: 2026-01-26
Assignee: mori
EOF
# 2つのファイル A と B の間に、境界線(標準入力)を挿入して結合出力
# a.txt と b.txt は事前に作成されているものとする
echo "------- SEPARATOR -------" | cat /tmp/mori_task.txt - /tmp/app_info.txt
TEXT
Task: Log analysis for project X
Date: 2026-01-26
Assignee: mori
------- SEPARATOR -------
Application Version: 2.4.5
Status: Running
まとめ
catコマンドは単なるファイル閲覧ツールに留まらず、標準入力を意味する「-」を活用したファイルの連結や、ヒアドキュメントによるテキスト生成など、Linux操作の柔軟性を支える重要な役割を担っています。特に大規模なログ調査においては、圧縮ファイルを扱うコマンドと組み合わせてストリーム処理を行うことで、ディスク容量を節約しながら効率的なデータ解析が可能になります。本手順で示したように、適切なオプションとリダイレクトを組み合わせることが、正確かつ迅速なシステム運用を実現するためのポイントです。
