「複数のログファイルを1つにまとめたいけど、どうすればいいか分からない」
Linuxを使い始めて最初に覚えるコマンドの1つが、ファイルの中身を表示する
cat コマンドです。この記事では、
cat(キャット)コマンド の実践的な使い方を解説します。基本的なファイル表示から、行番号の付与、複数ファイルの結合、リダイレクトによるファイル作成・追記まで、実務で必要になる操作をまとめました。
catコマンドとは?(ファイル内容を表示する基本コマンド)
cat は「concatenate(連結する)」の略で、もともとは複数のファイルを連結して出力するためのコマンドです。実務では「ファイルの中身を画面に表示する」用途で最も頻繁に使われています。設定ファイルの内容確認、スクリプトの中身チェック、ログの簡易閲覧など、Linuxを操作するうえで毎日のように使う基本中の基本のコマンドです。
基本的な使い方(ファイル内容を画面に表示する)
もっともシンプルな使い方は、ファイル名を指定するだけです。# /etc/hostname の内容を表示する $ cat /etc/hostname server01
1. 行番号を付けて表示する(-n)
設定ファイルの何行目に問題があるかを確認したい時は、-n オプションで行番号を付けて表示します。エラーメッセージに「○行目にエラー」と表示された時に便利です。# 行番号付きで表示する $ cat -n /etc/httpd/conf/httpd.conf 1 ServerRoot "/etc/httpd" 2 Listen 80 3 Include conf.modules.d/*.conf 4 User apache 5 Group apache
-b オプションを使います。# 空行以外に行番号を付ける $ cat -b /etc/httpd/conf/httpd.conf
2. 空行を詰めて表示する(-s)
設定ファイルやスクリプトの中に空行が連続して入っていると、画面が見づらくなります。-s(squeeze-blank)オプションを使うと、連続する空行を1行にまとめて表示してくれます。# 連続する空行を1行にまとめて表示する $ cat -s /etc/httpd/conf/httpd.conf
3. タブ文字を可視化する(-A / -T)
インデントがタブなのかスペースなのか判別したい場合、-A オプションを使うと、タブ文字が ^I、行末が $ で表示されます。Makefileのようにタブとスペースを厳密に区別するファイルのデバッグに役立ちます。# タブ文字と行末を可視化する $ cat -A Makefile all:^Igcc -o app main.c$ ^I./app$ # タブ文字だけを可視化する場合は -T $ cat -T Makefile
複数ファイルを結合(連結)する
cat の本来の用途である「ファイルの連結」も、実務で役に立ちます。1. 2つのファイルを続けて表示する
複数のファイルをスペース区切りで並べると、順番に連結して表示します。# file1.txt と file2.txt を続けて表示する $ cat file1.txt file2.txt
2. ワイルドカードでまとめて結合する
ワイルドカード(*)を使えば、同じ拡張子のファイルを一括で結合できます。分割されたログを1つにまとめたい場合に便利です。# カレントディレクトリの .log ファイルをすべて結合して1つのファイルに保存する $ cat *.log > all_logs.txt
リダイレクトでファイルを作成・追記する(実務の必須テクニック)
cat はリダイレクト(> や >>)と組み合わせることで、ファイルの作成や追記に使えます。1. 新しいファイルに出力する(>)
cat の出力先をファイルに向けると、新しいファイルが作成されます。すでにファイルが存在する場合は 上書き されるので注意してください。# file1.txt と file2.txt を結合して combined.txt に保存する $ cat file1.txt file2.txt > combined.txt
2. 既存ファイルに追記する(>>)
上書きではなく末尾に追記したい場合は>> を使います。ログの集約や設定の追加に使うテクニックです。# additional.conf の内容を main.conf の末尾に追記する $ cat additional.conf >> main.conf
3. ヒアドキュメントで複数行を一気に書き込む
シェルスクリプトや手動作業で、複数行のテキストを一度にファイルへ書き込みたい場合、ヒアドキュメント(<<EOF)を使います。# ヒアドキュメントで /etc/resolv.conf を作成する例 # cat << EOF > /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4 EOF
EOF は任意の文字列で構いません。開始と終了で同じ文字列を指定することで、その間の行がファイルに書き込まれます。4. 標準入力からファイルを作成する
ファイル名を指定せずにcat を実行すると、キーボードからの入力を受け付ける状態になります。リダイレクトと組み合わせれば、手早くファイルを作成できます。# キーボードからの入力で新しいファイルを作成する $ cat > memo.txt ここに内容を入力する 入力が終わったら Ctrl + D を押す
catコマンドの注意点と代替コマンド
【重要】大きなファイルにcatを使ってはいけない理由
cat はファイルの内容を すべて一気に画面に表示 します。数万行のログファイルに対して実行すると、画面が高速でスクロールし、ターミナルがフリーズしたように見えることがあります。大きなファイルの内容を確認する場合は、用途に応じて以下のコマンドを使い分けてください。
・
less ファイル名:ページ単位でスクロールしながら閲覧できる(上下移動、検索も可能)・
head -n 20 ファイル名:先頭の20行だけ表示する・
tail -n 20 ファイル名:末尾の20行だけ表示する・
grep "検索文字列" ファイル名:特定の文字列を含む行だけ表示する目安として、100行を超えるファイルは
less を使う癖をつけておくと安全です。ファイルを空にする(0バイトにする)テクニック
ログファイルのサイズが大きくなりすぎた時に、ファイルを削除せずに中身だけ空にしたい場合があります。cat /dev/null とリダイレクトを組み合わせることで実現できます。# ファイルの中身を空にする(ファイル自体は残る) # cat /dev/null > /var/log/httpd/access_log
本記事のまとめ(catオプション早見表)
| やりたいこと | コマンド |
|---|---|
| ファイル内容を表示する | cat ファイル名 |
| 行番号を付けて表示する | cat -n ファイル名 |
| 空行を詰めて表示する | cat -s ファイル名 |
| タブ文字・行末を可視化する | cat -A ファイル名 |
| 複数ファイルを結合して表示する | cat ファイル1 ファイル2 |
| 結合結果を新しいファイルに保存する | cat ファイル1 ファイル2 > 出力ファイル |
| 既存ファイルの末尾に追記する | cat 追記元ファイル >> 追記先ファイル |
| ヒアドキュメントでファイルを作成する | cat << EOF > ファイル名 |
| ファイルの中身を空にする | cat /dev/null > ファイル名 |
Linuxのファイル操作をもっと体系的に学びたいですか?
catコマンドはLinuxの基本中の基本ですが、実務ではファイル操作・パーミッション・パイプの組み合わせなど、体系的な知識が求められます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・pstree
・chsh
・finger
・duコマンドでディスク使用量を確認する方法|ディレクトリごとの容量や容量順ソートも
・LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方
