catコマンドの使い方|ファイル表示・結合・作成の逆引き早見表

コマンドリファレンス

cat コマンドは、ファイルの内容を標準出力(画面)に表示するLinux/Unixの基本コマンドです。名前は concatenate(連結する)の略で、1つのファイルを表示するだけでなく、複数ファイルを結合して表示したり、新しいファイルを作成したりする用途にも使われます。

この記事では、cat コマンドの構文・主要オプション・実行例に加えて、less や head との使い分け、Windows環境での代替コマンドまでまとめて解説します。

catコマンド逆引き早見表(やりたいこと別)

日常の実務でよく使う cat コマンドの構文を、目的別に素早く逆引きできるように整理しました。

やりたいこと(目的)実行コマンド解説
ファイルの内容を表示するcat file.txtファイルの中身を画面(標準出力)に一括出力
行番号を付けて表示するcat -n file.txt空行も含めたすべての行に行番号を表示
空白行を除いて行番号を付けるcat -b file.txt本文がある行のみに行番号をカウント表示
複数ファイルを結合して画面表示cat file1.txt file2.txt複数のファイルを順に連結して一括出力
複数ファイルを結合して別名保存cat file1.txt file2.txt > merged.txtリダイレクト(>)で結合結果を新規保存
既存ファイルに別の内容を追記cat append.txt >> target.txt追記リダイレクト(>>)で末尾に追加
対話形式で新規ファイルを作成cat > newfile.txt入力を直接保存(Ctrl+D で終了)
ヒアドキュメントで設定ファイルを生成cat << 'EOF' > config.txtスクリプト内で複数行ファイルを自動作成
連続する空行を1行にまとめるcat -s file.txt冗長な空行を圧縮してスッキリ表示
タブや改行などの不可視文字を確認cat -A file.txtタブ(^I)や行末($)を可視化

catコマンドとは

cat は GNU coreutils に含まれる標準コマンドで、次のような場面でよく使われます。

  • ログファイルや設定ファイルの中身を素早く確認する
  • 複数のファイルを1つに結合する
  • リダイレクトと組み合わせて新しいファイルを作成する
  • パイプと組み合わせて他のコマンドへ入力を渡す

構文(Syntax)

cat [オプション] [FILE...]

FILEを省略、または - を指定すると標準入力から読み込みます。

主なオプション一覧

オプション説明使用例
-n行番号を付けて表示cat -n test.txt
-b空行を除いて行番号を付けるcat -b test.txt
-s連続する空行を1行にまとめるcat -s test.txt
-E行末に $ を表示cat -E test.txt
-Tタブ文字を ^I として表示cat -T test.txt
-A非表示文字もすべて可視化(-vET と同じ)cat -A test.txt

実行例

ファイル内容を表示

cat test.txt

出力例:

Hello
World

行番号を付けて表示

cat -n test.txt

出力例:

     1	Hello
     2	World

空行を除いて行番号を付ける

cat -b blank.txt

出力例(blank.txt の中身が a / 空行 / b の場合、空行には番号が付かない):

     1	a

     2	b

複数ファイルを結合して表示

cat file1.txt file2.txt

出力例:

Line A
Line B
Line C
Line D

複数ファイルを結合して新しいファイルに保存

結合結果を画面に表示するだけでなく、リダイレクト(>)で新しいファイルに保存できます。

cat file1.txt file2.txt > combined.txt

既存のファイルにさらに追記したい場合は >>(追記リダイレクト)を使います。> は上書き、>> は追記という違いに注意してください。

cat file1.txt >> combined.txt

新しいファイルを作成(リダイレクトを使用)

cat > newfile.txt
これは新しいファイルです
Ctrl+D

(入力終了後、newfile.txt に保存されます)

ヒアドキュメントで複数行ファイルを作成

シェルスクリプト内などで、複数行のテキストを含む設定ファイルを自動生成したい場合にはヒアドキュメント(Here Document)がよく使われます。

cat << 'EOF' > config.txt
user=admin
password=secret
port=8080
EOF

上記を実行すると、EOF から EOF までの内容が config.txt に書き込まれます。ヒアドキュメントの詳細な構文(変数展開の無効化、行頭タブの削除、sudo tee 連携など)については、以下の解説記事をご覧ください。

パイプで他のコマンドと組み合わせる

cat は標準入力をそのまま出力するため、パイプの動作確認や他コマンドの出力の受け皿としてもよく使われます。

echo "Hello World" | cat
head -n 10 access.log | cat -n

また、複数ファイルを結合してパイプ(|)で grep に渡し、特定行を一括抽出する用途でも活用されます。

# 複数ファイルを連結して一括検索する例
cat server1.log server2.log | grep "ERROR"

ただし、単一ファイルを検索する場合は cat file.log | grep "ERROR" と書くよりも、直接 grep "ERROR" file.log と引数指定した方が不要なプロセス起動(UUOC: Useless Use of cat)を防いで高速かつ安全に動作します。grep の主要オプションや逆引きテクニックについては、【Linux】grepコマンドの使い方と主要オプション一覧!逆引き実例と正規表現まとめ をご覧ください。

権限不足でエラーになる例

cat /etc/shadow

出力例:

cat: /etc/shadow: Permission denied

catとless・head・tailの違い

cat はファイル全体を一度に出力するため、大きなファイルを開くと大量の行が流れてしまい、内容を追いづらくなります。用途に応じて次のコマンドと使い分けます。

コマンド用途特徴
catファイル全体を一括表示・結合スクロール不可。小さいファイル向け
lessページ単位で閲覧スクロール・検索が可能。大きいファイル向け
moreページ単位で閲覧(旧式)前方スクロールのみ
headファイルの先頭を表示既定は先頭10行
tailファイルの末尾を表示-f でログのリアルタイム監視も可能
taccat の逆で行を逆順に表示名前の通り cat の綴りを逆にしたコマンド

目安として、ターミナルの画面に収まらない・スクロールして読みたいファイルは less、先頭や末尾だけ確認したい場合は head / tail を使うとよいでしょう。

よくある質問(FAQ)

catの語源は?

concatenate(連結する)の略です。もともと複数ファイルを1つに連結する用途で作られたコマンドで、単一ファイルの表示はその副次的な使い方にあたります。

catとlessの違いは?

cat はファイル内容を一括で出力するのに対し、less はページ単位でスクロール・検索しながら閲覧できます。行数が多いファイルは less の方が扱いやすいです。

大きなファイルをcatすると画面が乱れる・固まるのはなぜ?

行数が多いファイルを cat すると全行が一気に出力され、スクロールが追いつかなくなります。また、バイナリファイルを誤って cat すると制御文字により端末表示が乱れることがあります。その場合は端末を閉じて開き直すか、reset コマンドで表示を復元してください。大きいファイルは less や head の利用をおすすめします。

WindowsでLinuxのcatコマンドは使えますか?

Git Bash や WSL(Windows Subsystem for Linux)では cat コマンドがそのまま使えます。コマンドプロンプト(cmd.exe)には cat は存在せず、同等の操作は type コマンドで行います。PowerShellでは Get-Content(エイリアス cat/gc)が同様の役割を果たします。

# コマンドプロンプト(cmd.exe)
type test.txt

# PowerShell
Get-Content test.txt

ファイルを結合する以外の使い道はありますか?

はい。標準入力の内容をそのまま出力する性質を利用して、パイプラインの動作確認(echo "test" | cat)や、他コマンドの出力を整形せずそのまま次の処理に渡す用途にも使われます。

注意点

  • cat は GNU coreutils に含まれます。BSD系(macOSなど)でも同様に利用できますが、細かいオプションの違いがあります。
  • 権限のないファイルは sudo が必要です。
  • リダイレクト(>)は既存ファイルを無条件に上書きします。誤って重要なファイルを上書きしないよう、書き込み先のファイル名は慎重に確認してください。
  • cat で内容を表示する代わりに、/etc/group や /etc/passwd のようなシステム設定ファイルは専用コマンド(例: getent)で参照することも推奨されます。
  • 単一ファイルのテキスト処理を行う際に不要な cat パイプ(UUOC: Useless Use of cat)を挟むと、余計なプロセスが起動してパフォーマンスが低下します。ファイル引数を直接渡せるコマンド(grep など)には直接ファイル名を指定するのがベストプラクティスです。

関連コマンド

  • grep : ファイル内から特定文字列や正規表現パターンを検索・抽出する
  • less : ファイル内容をスクロールしながら閲覧できる
  • more : ページ単位でファイルを表示できる
  • head : ファイルの先頭を表示する
  • tail : ファイルの末尾を表示する
  • tac : cat の逆で、ファイルを逆順に表示する

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント