この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:guest
更新日時:2026-09-06 15:08:53

タイトル: cat ファイルの中身を表示
SEOタイトル: Linux catコマンドの使い方|行番号表示・複数ファイル連結

この記事の要点
  • cat はファイルの内容を標準出力に表示するコマンド(concatenate の略)
  • 基本構文: cat [オプション] ファイル...
  • 主なオプション: -n(行番号)、-b(空行を除いた行番号)、-A(不可視文字も表示)、-s(連続空行を圧縮)
  • 複数ファイルを指定すると連結して表示。リダイレクトと組み合わせて結合ファイルを作れる
  • 大きいファイルや少しずつ見たいときは less / more / head / tail を使う

cat コマンドとは

cat はファイルの内容を標準出力に表示する Linux / Unix の基本コマンドです。「concatenate(連結)」の略で、本来は複数のファイルを連結する機能を持ちますが、日常的には「ファイルの中身を確認する」用途で最も使われます。

基本構文

cat [オプション] ファイル...

基本例

# ファイルの中身を表示
$ cat sample.txt
aaa
bbb
ccc

# 行番号付き表示
$ cat -n sample.txt
     1  aaa
     2  bbb
     3  ccc

主なオプション

オプション意味
-n / --numberすべての行に行番号を表示
-b / --number-nonblank空行以外に行番号を表示
-s / --squeeze-blank連続する空行を 1 行に圧縮
-E / --show-ends行末に $ を表示
-T / --show-tabsタブを ^I として表示
-v / --show-nonprinting制御文字を可視化
-A / --show-all-vET 相当(すべて可視化)
--helpヘルプ表示
--versionバージョン表示

複数ファイルの連結表示

本来の cat(concatenate)の使い方です。指定順に内容を連結して出力します。

# 2 つのファイルを順番に表示
$ cat file1.txt file2.txt

# ワイルドカードで一括連結
$ cat /var/log/app/*.log

# 連結結果をファイルに保存
$ cat header.txt body.txt footer.txt > combined.txt

標準入力との組み合わせ

ファイル名の代わりに - を指定すると標準入力を読み込みます。パイプラインに挟む使い方もできます。

# パイプの中身を表示
$ echo "hello" | cat
hello

# ファイルと標準入力の混在
$ echo "前後" | cat header.txt - footer.txt

ヒアドキュメントでファイル作成

$ cat > note.txt << 'EOF'
1行目
2行目
3行目
EOF

シェルスクリプト内で設定ファイルを生成する定番パターンです。'EOF' をシングルクオートで囲むと、中の $変数 が展開されません。

不可視文字の確認(-A)

「なぜか動かない設定ファイル」「行末に余計な空白がある」といった調査では cat -A が便利です。タブ、行末、CRLF をすべて可視化します。

$ cat -A windows-file.txt
Hello, World!^M$
1行目に CRLF が混ざっている^M$

^M$ が CRLF(Windows 改行)、$ だけが LF(Unix 改行)を示します。

cat と類似コマンドの使い分け

コマンド用途
cat全体を一気に表示 / 連結
lessページ単位で対話的に閲覧(推奨)
moreページ単位(less より機能少)
head先頭 n 行だけ表示(デフォルト 10)
tail末尾 n 行 / -f でリアルタイム追従
tac逆順表示(cat の逆)
nl行番号を付けて出力(細かく制御可)

UUOC(Useless Use of Cat)

シェルスクリプト界隈には「cat を無駄に使うな」という有名な指摘があります。次は cat を省ける典型例です。

# 非効率: cat を経由
$ cat file.txt | grep "error"

# 効率的: grep に直接ファイルを渡す
$ grep "error" file.txt

# シェルのリダイレクトを使う
$ grep "error" < file.txt

大きなファイルでは cat を介する分プロセス起動コストとパイプ転送コストが余分にかかります。1 ファイルなら引数で直接渡すのが正解。

よくある使い方

用途コマンド例
設定ファイルを表示cat /etc/nginx/nginx.conf
ログをまとめて閲覧cat /var/log/app/*.log
連結してファイル作成cat part1 part2 > merged
パスワードファイル確認cat /etc/passwd
SSH 公開鍵をクリップcat ~/.ssh/id_rsa.pub

FAQ

Q: バイナリファイルを cat したら端末が壊れた
A: バイナリには制御文字(ESC など)が含まれ端末設定を狂わせます。reset コマンドで復旧。バイナリ確認には xxd / hexdump / od を使う。

Q: ファイルが大きすぎて画面が流れる
A: less file.txt を使うとページ単位で閲覧できます。スペースで次ページ、/word で検索、q で終了。

Q: 行番号を 1 から振り直して出力したい
A: cat -n でファイル全体に通し番号。複数ファイル連結時にファイルごとに 1 から振り直すには nl をファイルごとに呼ぶ。

関連

  • コマンド一覧 — 親カテゴリ
  • less / more — ページ単位で閲覧
  • head / tail — 先頭・末尾だけ表示
  • tac / rev — 逆順表示
  • grep / awk / sed — テキスト処理の定番